// Renegade Map Selector // // Douglas Thrift // // MapSelector.cpp #ifndef _WIN32 static void destruct(GtkWidget* widget, gpointer data) { gtk_main_quit(); } static void done(GtkWidget* widget, gpointer data) { if (true) { message(GTK_WINDOW(window), "You need at least one map.", "No Maps", GTK_MESSAGE_WARNING); } else { // config->save(); gtk_main_quit(); } } static void mapAdd(GtkWidget* widget, gpointer data) { cout << "STUB: add\n\a" << flush; } static void mapRemove(GtkWidget* widget, gpointer data) { cout << "STUB: remove\n\a" << flush; } static void mapUp(GtkWidget* widget, gpointer data) { cout << "STUB: up\n\a" << flush; } static void mapDown(GtkWidget* widget, gpointer data) { cout << "STUB: down\n\a" << flush; } MapSelector::MapSelector() { window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Renegade Map Selector"); gtk_window_set_resizable(GTK_WINDOW(window), false); g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(destruct), NULL); GtkWidget* vertical = gtk_vbox_new(false, 0); GtkWidget* horizontal = gtk_hbox_new(false, 9); GtkWidget* left = gtk_frame_new("Available Maps"); gtk_frame_set_label_align(GTK_FRAME(left), 0.5, 0.5); gtk_container_set_border_width(GTK_CONTAINER(left), 6); GtkWidget* center = gtk_vbox_new(true, 0); GtkWidget* top = gtk_vbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(top), GTK_BUTTONBOX_START); gtk_box_set_spacing(GTK_BOX(top), 9); gtk_container_set_border_width(GTK_CONTAINER(top), 6); add = gtk_button_new_with_mnemonic("_Add"); g_signal_connect(G_OBJECT(add), "clicked", G_CALLBACK(mapAdd), NULL); gtk_widget_set_sensitive(add, false); remove = gtk_button_new_with_mnemonic("_Remove"); g_signal_connect(G_OBJECT(remove), "clicked", G_CALLBACK(mapRemove), NULL); gtk_widget_set_sensitive(remove, false); GtkWidget* middle = gtk_vbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(middle), GTK_BUTTONBOX_END); gtk_box_set_spacing(GTK_BOX(middle), 9); gtk_container_set_border_width(GTK_CONTAINER(middle), 6); up = gtk_button_new_with_mnemonic("_Up"); g_signal_connect(G_OBJECT(up), "clicked", G_CALLBACK(mapUp), NULL); gtk_widget_set_sensitive(up, false); down = gtk_button_new_with_mnemonic("_Down"); g_signal_connect(G_OBJECT(down), "clicked", G_CALLBACK(mapDown), NULL); gtk_widget_set_sensitive(down, false); GtkWidget* right = gtk_frame_new("Selected Maps"); gtk_frame_set_label_align(GTK_FRAME(right), 0.5, 0.5); gtk_container_set_border_width(GTK_CONTAINER(right), 6); GtkWidget* separator = gtk_hseparator_new(); GtkWidget* bottom = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(bottom), GTK_BUTTONBOX_END); gtk_box_set_spacing(GTK_BOX(bottom), 9); gtk_container_set_border_width(GTK_CONTAINER(bottom), 6); GtkWidget* ok = gtk_button_new_from_stock(GTK_STOCK_OK); g_signal_connect(G_OBJECT(ok), "clicked", G_CALLBACK(done), NULL); GtkWidget* cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); g_signal_connect(G_OBJECT(cancel), "clicked", G_CALLBACK(destruct), NULL); // pack gtk_container_add(GTK_CONTAINER(vertical), horizontal); gtk_container_add(GTK_CONTAINER(horizontal), left); gtk_container_add(GTK_CONTAINER(horizontal), center); gtk_container_add(GTK_CONTAINER(center), top); gtk_container_add(GTK_CONTAINER(top), add); gtk_container_add(GTK_CONTAINER(top), remove); gtk_container_add(GTK_CONTAINER(center), middle); gtk_container_add(GTK_CONTAINER(middle), up); gtk_container_add(GTK_CONTAINER(middle), down); gtk_container_add(GTK_CONTAINER(horizontal), right); gtk_container_add(GTK_CONTAINER(vertical), separator); gtk_container_add(GTK_CONTAINER(bottom), ok); gtk_container_add(GTK_CONTAINER(bottom), cancel); gtk_container_add(GTK_CONTAINER(vertical), bottom); gtk_container_add(GTK_CONTAINER(window), vertical); // show gtk_widget_show(left); gtk_widget_show(add); gtk_widget_show(remove); gtk_widget_show(top); gtk_widget_show(up); gtk_widget_show(down); gtk_widget_show(middle); gtk_widget_show(center); gtk_widget_show(right); gtk_widget_show(horizontal); gtk_widget_show(separator); gtk_widget_show(ok); gtk_widget_show(cancel); gtk_widget_show(bottom); gtk_widget_show(vertical); gtk_widget_show(window); gtk_main(); } #endif