summaryrefslogtreecommitdiff
path: root/KPLUnixStarter.c
blob: f4c592834d6f1d23d865fb24879e9adba51fb806 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <gtk/gtk.h>

#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",
                                         GTK_WINDOW(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;
    GtkWidget *image;

    gtk_init(&argc, &argv);

    mainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(mainWindow), "Kernel Panic Launcher");
    gtk_window_set_default_icon_from_file("icons/KPL.ico", NULL);

    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");
    image = gtk_image_new_from_file("icons/32x32LightBlueFlow.ico");
    gtk_button_set_image(GTK_BUTTON(button), GTK_WIDGET(image));
    gtk_container_add(GTK_CONTAINER(container), GTK_WIDGET(button));
    g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(start_single_game),
        GINT_TO_POINTER(0));

    button = gtk_button_new_with_mnemonic("_Easy");
    image = gtk_image_new_from_file("icons/32x32GreenBit.ico");
    gtk_button_set_image(GTK_BUTTON(button), GTK_WIDGET(image));
    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");
    image = gtk_image_new_from_file("icons/32x32YellowPointer.ico");
    gtk_button_set_image(GTK_BUTTON(button), GTK_WIDGET(image));
    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");
    image = gtk_image_new_from_file("icons/32x32OrangeByte.ico");
    gtk_button_set_image(GTK_BUTTON(button), GTK_WIDGET(image));
    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");
    image = gtk_image_new_from_file("icons/32x32RedConnection.ico");
    gtk_button_set_image(GTK_BUTTON(button), GTK_WIDGET(image));
    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;
}