diff --git a/src/drivers/sdl/gui.cpp b/src/drivers/sdl/gui.cpp index 0a769fd3..93283351 100644 --- a/src/drivers/sdl/gui.cpp +++ b/src/drivers/sdl/gui.cpp @@ -1383,6 +1383,234 @@ void toggleAutoResume (GtkToggleAction *action) AutoResumePlay = autoResume; } +// creates and opens cheats window +static void openCheatsWindow(void) +{ + GtkWidget* win; + GtkWidget* main_hbox; + GtkWidget* hbox; + GtkWidget* vbox, *prev_cmp_vbox; + GtkWidget* frame; + GtkWidget* label, *txt_entry; + GtkWidget* button; + GtkWidget *tree; + GtkWidget *scroll; + + win = gtk_dialog_new_with_buttons("Cheats", + GTK_WINDOW(MainWindow), (GtkDialogFlags)(GTK_DIALOG_DESTROY_WITH_PARENT), + GTK_STOCK_CLOSE, + GTK_RESPONSE_OK, + NULL); + gtk_window_set_default_size(GTK_WINDOW(win), 600, 600); + + main_hbox = gtk_hbox_new(FALSE, 2); + vbox = gtk_vbox_new(FALSE, 5); + frame = gtk_frame_new("Active Cheats"); + + GtkTreeStore *actv_cheats_store = gtk_tree_store_new( 1, G_TYPE_STRING); + + GtkTreeIter iter; + + gtk_tree_store_append(actv_cheats_store, &iter, NULL); // aquire iter + + for(int i=0; i<15; i++) + { + std::string cheatName = "Test"; + + gtk_tree_store_set(actv_cheats_store, &iter, + 0, cheatName.c_str(), + -1); + + gtk_tree_store_append(actv_cheats_store, &iter, NULL); // acquire child iterator + } + + tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(actv_cheats_store)); + + GtkCellRenderer *renderer; + GtkTreeViewColumn* column; + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes("Active Cheats", renderer, "text", 0, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); + + scroll = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); + gtk_container_add(GTK_CONTAINER(scroll), tree); + gtk_box_pack_start(GTK_BOX(vbox), scroll, TRUE, TRUE, 1); + + hbox = gtk_hbox_new(FALSE, 2); + label = gtk_label_new("Name:"); + txt_entry = gtk_entry_new(); + + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 1); + gtk_box_pack_start(GTK_BOX(hbox), txt_entry, TRUE, TRUE, 1); + + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 1); + + hbox = gtk_hbox_new(FALSE, 6); + label = gtk_label_new("Addr:"); + txt_entry = gtk_entry_new(); + gtk_entry_set_max_length( GTK_ENTRY(txt_entry), 8 ); + gtk_entry_set_width_chars( GTK_ENTRY(txt_entry), 8 ); + + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 1); + gtk_box_pack_start(GTK_BOX(hbox), txt_entry, TRUE, TRUE, 1); + + label = gtk_label_new("Val:"); + txt_entry = gtk_entry_new(); + gtk_entry_set_max_length( GTK_ENTRY(txt_entry), 4 ); + gtk_entry_set_width_chars( GTK_ENTRY(txt_entry), 4 ); + + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 1); + gtk_box_pack_start(GTK_BOX(hbox), txt_entry, TRUE, TRUE, 1); + + label = gtk_label_new("Cmp:"); + txt_entry = gtk_entry_new(); + gtk_entry_set_max_length( GTK_ENTRY(txt_entry), 4 ); + gtk_entry_set_width_chars( GTK_ENTRY(txt_entry), 4 ); + + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 1); + gtk_box_pack_start(GTK_BOX(hbox), txt_entry, TRUE, TRUE, 1); + + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 1); + + hbox = gtk_hbox_new(FALSE, 3); + button = gtk_button_new_with_label("Add"); + gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 1); + button = gtk_button_new_with_label("Delete"); + gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 1); + button = gtk_button_new_with_label("Update"); + gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 1); + + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 1); + + hbox = gtk_hbox_new(FALSE, 1); + button = gtk_button_new_with_label("Add from CHT file..."); + gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 1); + + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 1); + + gtk_container_add(GTK_CONTAINER(frame), vbox); + // + gtk_box_pack_start(GTK_BOX(main_hbox), frame, TRUE, TRUE, 1); + + vbox = gtk_vbox_new(FALSE, 5); + hbox = gtk_hbox_new(FALSE, 1); + button = gtk_button_new_with_label("Reset"); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); + + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); + + hbox = gtk_hbox_new(FALSE, 3); + button = gtk_button_new_with_label("Known Value:"); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); + label = gtk_label_new("0x"); + txt_entry = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); + gtk_box_pack_start(GTK_BOX(hbox), txt_entry, FALSE, FALSE, 5); + + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); + + frame = gtk_frame_new("Previous Compare"); + gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5); + button = gtk_check_button_new_with_label("Pause emulation when this window is active"); + gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 5); + + prev_cmp_vbox = gtk_vbox_new(FALSE, 4); + gtk_container_add(GTK_CONTAINER(frame), prev_cmp_vbox); + + hbox = gtk_hbox_new(FALSE, 1); + button = gtk_button_new_with_label("Equal"); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); + gtk_box_pack_start(GTK_BOX(prev_cmp_vbox), hbox, FALSE, FALSE, 5); + + hbox = gtk_hbox_new(FALSE, 4); + button = gtk_button_new_with_label("Not Equal"); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); + button = gtk_check_button_new(); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); + label = gtk_label_new("By:"); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); + txt_entry = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(hbox), txt_entry, FALSE, FALSE, 5); + + gtk_box_pack_start(GTK_BOX(prev_cmp_vbox), hbox, FALSE, FALSE, 5); + + hbox = gtk_hbox_new(FALSE, 4); + button = gtk_button_new_with_label("Greater Than"); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); + button = gtk_check_button_new(); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); + label = gtk_label_new("By:"); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); + txt_entry = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(hbox), txt_entry, FALSE, FALSE, 5); + + gtk_box_pack_start(GTK_BOX(prev_cmp_vbox), hbox, FALSE, FALSE, 5); + + hbox = gtk_hbox_new(FALSE, 4); + button = gtk_button_new_with_label("Less Than"); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); + button = gtk_check_button_new(); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); + label = gtk_label_new("By:"); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); + txt_entry = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(hbox), txt_entry, FALSE, FALSE, 1); + + gtk_box_pack_start(GTK_BOX(prev_cmp_vbox), hbox, FALSE, FALSE, 1); + + hbox = gtk_hbox_new(FALSE, 2); + gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 1); + + frame = gtk_frame_new("Cheat Search"); + gtk_container_add(GTK_CONTAINER(frame), hbox); + gtk_box_pack_start(GTK_BOX(main_hbox), frame, TRUE, TRUE, 5); + + vbox = gtk_vbox_new(FALSE, 5); + //hbox = gtk_hbox_new(FALSE, 1); + + GtkTreeStore *ram_match_store = gtk_tree_store_new( 1, G_TYPE_STRING); + + gtk_tree_store_append( ram_match_store, &iter, NULL); // aquire iter + + for(int i=0; i<15; i++) + { + std::string ramText = "Test"; + + gtk_tree_store_set(ram_match_store, &iter, + 0, ramText.c_str(), + -1); + + gtk_tree_store_append(ram_match_store, &iter, NULL); // acquire child iterator + } + + tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ram_match_store)); + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes("0 Possibilities", renderer, "text", 0, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); + + scroll = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); + gtk_container_add(GTK_CONTAINER(scroll), tree); + gtk_box_pack_start(GTK_BOX(vbox), scroll, TRUE, TRUE, 5); + + frame = gtk_frame_new(""); + gtk_container_add(GTK_CONTAINER(frame), vbox); + + gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 5); + + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(win))), main_hbox, TRUE, TRUE, 0); + + g_signal_connect(win, "delete-event", G_CALLBACK(closeDialog), NULL); + g_signal_connect(win, "response", G_CALLBACK(closeDialog), NULL); + + gtk_widget_show_all(win); +} + void recordMovie() { if(isloaded) @@ -2229,6 +2457,9 @@ static char* menuXml = " " " " " " + "
" "