From ae8bd57cad0273c04e89fc2c267c655c4cb349c3 Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Fri, 1 May 2009 17:18:21 -0500 Subject: Get existing KPL code to compile and run under Linux. Start work on GTK+ KPL GUI. --- KPLUnixStarter.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 32 +++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 KPLUnixStarter.c create mode 100644 Makefile diff --git a/KPLUnixStarter.c b/KPLUnixStarter.c new file mode 100644 index 0000000..39821df --- /dev/null +++ b/KPLUnixStarter.c @@ -0,0 +1,87 @@ +#include + +#include "KPL_Start.h" + +static GtkWidget *mainWindow; + +static void on_destroy(GtkWidget *widget, gpointer data) { + gtk_main_quit(); +} + +/* Function to open a dialog box displaying the message provided. */ +static void quick_message (gchar *message) { + GtkWidget *dialog, *label, *content_area; + /* Create the widgets */ + dialog = gtk_dialog_new_with_buttons ("Message", + mainWindow, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_STOCK_OK, + GTK_RESPONSE_NONE, + NULL); + content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); + label = gtk_label_new (message); + /* Ensure that the dialog box is destroyed when the user responds. */ + g_signal_connect_swapped (dialog, + "response", + G_CALLBACK (gtk_widget_destroy), + dialog); + /* Add the label, and show everything we've added to the dialog. */ + gtk_container_add (GTK_CONTAINER (content_area), label); + gtk_widget_show_all (dialog); +} + +static void start_single_game(GtkButton *button, gpointer data) { + int ret = LaunchSpringExecutable(GPOINTER_TO_INT(data)); + if (ret != 0) { + fprintf(stderr, "Error: %d\n", ret); + quick_message("Error"); + } +} + +int main(int argc, char* argv[]) { + GtkWidget *container; + GtkWidget *button; + + gtk_init(&argc, &argv); + + mainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_title(GTK_WINDOW(mainWindow), "Kernel Panic Launcher"); + + g_signal_connect(G_OBJECT(mainWindow), "destroy", G_CALLBACK(on_destroy), + NULL); + + container = gtk_vbutton_box_new(); + gtk_container_add(GTK_CONTAINER(mainWindow), container); + + button = gtk_button_new_with_mnemonic("_Spectate"); + gtk_container_add(GTK_CONTAINER(container), button); + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(start_single_game), + GINT_TO_POINTER(0)); + + button = gtk_button_new_with_mnemonic("_Easy"); + gtk_container_add(GTK_CONTAINER(container), button); + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(start_single_game), + GINT_TO_POINTER(1)); + + button = gtk_button_new_with_mnemonic("_Medium"); + gtk_container_add(GTK_CONTAINER(container), button); + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(start_single_game), + GINT_TO_POINTER(2)); + + button = gtk_button_new_with_mnemonic("_Hard"); + gtk_container_add(GTK_CONTAINER(container), button); + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(start_single_game), + GINT_TO_POINTER(3)); + + button = gtk_button_new_with_mnemonic("_Very Hard"); + gtk_container_add(GTK_CONTAINER(container), button); + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(start_single_game), + GINT_TO_POINTER(4)); + + gtk_widget_show_all(mainWindow); + gtk_main(); + + //return StartEasy(0); + return 0; +} + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..320179f --- /dev/null +++ b/Makefile @@ -0,0 +1,32 @@ +srcdir = . +REALCFLAGS = $(CFLAGS) -fPIC + +.SUFFIXES: +.SUFFIXES: .cpp .o + +all: obj/libKPL.so obj/KPLUnixStarter + +obj/libKPL.so: obj/GenerateScript.o obj/ColorSpacesConversions.o obj/KPLFillModSpecific.o obj/KPLTypes.o obj/WriteScript.o obj/KPL_Start.o + g++ $(REALCFLAGS) -shared -o $@ $^ + +obj/KPLUnixStarter: obj/KPLUnixStarter.o obj/libKPL.so + gcc $(REALCFLAGS) -o $@ obj/KPLUnixStarter.o -L./obj -lKPL `pkg-config --libs gtk+-2.0` + +obj/KPLUnixStarter.o: KPLUnixStarter.c + gcc $(REALCFLAGS) `pkg-config --cflags gtk+-2.0` -c -o $@ $< + +obj/%.o: %.c + gcc $(REALCFLAGS) -c -o $@ $< + +obj/%.o: %.cpp + g++ $(REALCFLAGS) -c -o $@ $< + +clean: + rm -f obj/*.o obj/*.so + +dist: obj/libKPL.so obj/KPLUnixStarter + strip obj/libKPL.so + strip obj/KPLUnixStarter + +.PHONEY: clean + -- cgit v1.2.3-54-g00ecf