static void OnCheatListDlg_AddClicked(GtkWidget *widget, gpointer user_data) { GtkWidget *dlg; GtkWidget *box, *scroll, *label, *descr_edit, *code_edit; dlg = gtk_dialog_new_with_buttons(_("Add New Cheat"), GTK_WINDOW(CheatListDlg), GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_default_size(GTK_WINDOW(dlg), 350, 350); box = GTK_WIDGET(gtk_dialog_get_content_area(GTK_DIALOG(dlg))); label = gtk_label_new(_("Cheat Description:")); gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); gtk_widget_show(label); descr_edit = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(box), descr_edit, FALSE, FALSE, 5); gtk_widget_show(descr_edit); label = gtk_label_new(_("Cheat Code:")); gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); gtk_widget_show(label); code_edit = gtk_text_view_new(); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(code_edit), GTK_WRAP_CHAR); scroll = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll), code_edit); gtk_widget_show(code_edit); gtk_box_pack_start(GTK_BOX(box), scroll, TRUE, TRUE, 5); gtk_widget_show(scroll); gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER); gtk_widget_show_all(dlg); if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_ACCEPT) { GtkTextBuffer *b = gtk_text_view_get_buffer(GTK_TEXT_VIEW(code_edit)); GtkTextIter s, e; char *codetext; gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(b), &s, &e); codetext = strdup(gtk_text_buffer_get_text(GTK_TEXT_BUFFER(b), &s, &e, FALSE)); if (AddCheat(gtk_entry_get_text(GTK_ENTRY(descr_edit)), codetext) != 0) { SysErrorMessage(_("Error"), _("Invalid cheat code!")); } LoadCheatListItems(NumCheats - 1); free(codetext); } gtk_widget_destroy(dlg); }
BOOL CALLBACK FinderProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { int wmId,wmEvent; LRESULT lStyle; switch(uMsg) { case WM_PAINT: INIT_CHECK(IDC_UNSIGNED,Unsigned); return FALSE; case WM_INITDIALOG: mptr[0]=eeMem->Main; mptr[1]=psxM; hWndFinder=hWnd; ENABLE_CONTROL(IDC_VALUE,false); GROUP_INIT(IDC_EE,Source); GROUP_SELECT(IDC_EE); GROUP_SELECT(IDC_IOP); GROUP_INIT(IDC_OLD,CompareTo); GROUP_SELECT(IDC_OLD); GROUP_SELECT(IDC_SET); ENABLE_CONTROL(IDC_VALUE,(CompareTo!=0)); GROUP_INIT(IDC_EQ,Compare); GROUP_SELECT(IDC_EQ); GROUP_SELECT(IDC_GT); GROUP_SELECT(IDC_LT); GROUP_SELECT(IDC_GE); GROUP_SELECT(IDC_LE); GROUP_SELECT(IDC_NE); GROUP_INIT(IDC_8B,Size); GROUP_SELECT(IDC_8B); GROUP_SELECT(IDC_16B); GROUP_SELECT(IDC_32B); GROUP_SELECT(IDC_64B); INIT_CHECK(IDC_UNSIGNED,Unsigned); //Listview Init lStyle = SendMessage(GetDlgItem(hWnd,IDC_RESULTS), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0); SendMessage(GetDlgItem(hWnd,IDC_RESULTS), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, lStyle | LVS_EX_FULLROWSELECT); ListView_InsertColumn(GetDlgItem(hWnd,IDC_RESULTS),0,&cols[0]); ListView_InsertColumn(GetDlgItem(hWnd,IDC_RESULTS),1,&cols[1]); ListView_InsertColumn(GetDlgItem(hWnd,IDC_RESULTS),2,&cols[2]); if(FirstShow) { SearchReset(); SetWindowText(GetDlgItem(hWnd,IDC_MATCHES),"ready to search."); FirstShow=false; } else { AddResults(hWnd); } break; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDCANCEL: EndDialog(hWnd,1); break; case IDC_ADD: AddCheat(pInstance,hWnd); break; case IDC_RESET: ENABLE_CONTROL(IDC_EE, true); ENABLE_CONTROL(IDC_IOP, true); ENABLE_CONTROL(IDC_STATUS, true); ENABLE_CONTROL(IDC_UNSIGNED,true); ENABLE_CONTROL(IDC_8B, true); ENABLE_CONTROL(IDC_16B, true); ENABLE_CONTROL(IDC_32B, true); ENABLE_CONTROL(IDC_64B, true); SetWindowText(GetDlgItem(hWnd,IDC_MATCHES),"ready to search."); SearchReset(); ListView_DeleteAllItems(GetDlgItem(hWnd,IDC_RESULTS)); break; case IDC_SEARCH: GetWindowText(GetDlgItem(hWnd,IDC_VALUE),mtext,100); CompareValue=atoi(mtext); ENABLE_CONTROL(IDC_SEARCH, false); ENABLE_CONTROL(IDC_RESET, false); ENABLE_CONTROL(IDC_ADD, false); ENABLE_CONTROL(IDCANCEL, false); if(FirstSearch) { ENABLE_CONTROL(IDC_EE, false); ENABLE_CONTROL(IDC_IOP, false); ENABLE_CONTROL(IDC_STATUS, false); ENABLE_CONTROL(IDC_UNSIGNED,false); ENABLE_CONTROL(IDC_8B, false); ENABLE_CONTROL(IDC_16B, false); ENABLE_CONTROL(IDC_32B, false); ENABLE_CONTROL(IDC_64B, false); SearchFirst(); } else SearchMore(); AddResults(hWnd); memcpy(olds,mptr[Source],msize[Source]); ENABLE_CONTROL(IDC_SEARCH, true); ENABLE_CONTROL(IDC_RESET, true); ENABLE_CONTROL(IDC_ADD, true); ENABLE_CONTROL(IDCANCEL, true); break; HANDLE_CHECK(IDC_UNSIGNED,Unsigned); HANDLE_GROUP_ITEM(IDC_EE); HANDLE_GROUP_ITEM(IDC_IOP); BEGIN_GROUP_HANDLER(IDC_EE,Source); GROUP_SELECT(IDC_EE); GROUP_SELECT(IDC_IOP); break; HANDLE_GROUP_ITEM(IDC_OLD); HANDLE_GROUP_ITEM(IDC_SET); BEGIN_GROUP_HANDLER(IDC_OLD,CompareTo); GROUP_SELECT(IDC_OLD); GROUP_SELECT(IDC_SET); ENABLE_CONTROL(IDC_VALUE,(CompareTo!=0)); break; HANDLE_GROUP_ITEM(IDC_EQ); HANDLE_GROUP_ITEM(IDC_GT); HANDLE_GROUP_ITEM(IDC_LT); HANDLE_GROUP_ITEM(IDC_GE); HANDLE_GROUP_ITEM(IDC_LE); HANDLE_GROUP_ITEM(IDC_NE); BEGIN_GROUP_HANDLER(IDC_EQ,Compare); GROUP_SELECT(IDC_EQ); GROUP_SELECT(IDC_GT); GROUP_SELECT(IDC_LT); GROUP_SELECT(IDC_GE); GROUP_SELECT(IDC_LE); GROUP_SELECT(IDC_NE); break; HANDLE_GROUP_ITEM(IDC_8B); HANDLE_GROUP_ITEM(IDC_16B); HANDLE_GROUP_ITEM(IDC_32B); HANDLE_GROUP_ITEM(IDC_64B); BEGIN_GROUP_HANDLER(IDC_8B,Size); GROUP_SELECT(IDC_8B); GROUP_SELECT(IDC_16B); GROUP_SELECT(IDC_32B); GROUP_SELECT(IDC_64B); break; default: return FALSE; } break; default: return FALSE; } return TRUE; }
// add cheat code to freeze the value static void OnCheatSearchDlg_FreezeClicked(GtkWidget *widget, gpointer user_data) { GtkWidget *dlg; GtkWidget *box, *hbox, *label, *descr_edit, *value_edit; char buf[256]; u32 addr, val = 0; addr = SearchResults[GetSelectedResultIndex()]; dlg = gtk_dialog_new_with_buttons(_("Freeze value"), GTK_WINDOW(CheatListDlg), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); box = GTK_WIDGET(gtk_dialog_get_content_area(GTK_DIALOG(dlg))); label = gtk_label_new(_("Description:")); gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); gtk_widget_show(label); descr_edit = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(box), descr_edit, FALSE, FALSE, 10); gtk_widget_show(descr_edit); hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 15); label = gtk_label_new(_("Value:")); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); gtk_widget_show(label); value_edit = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(hbox), value_edit, FALSE, FALSE, 10); gtk_widget_show(value_edit); switch (current_searchtype) { case SEARCHTYPE_8BIT: val = PSXMu8(addr); break; case SEARCHTYPE_16BIT: val = PSXMu16(addr); break; case SEARCHTYPE_32BIT: val = PSXMu32(addr); break; default: assert(FALSE); // should not reach here break; } sprintf(buf, "%u", val); gtk_entry_set_text(GTK_ENTRY(value_edit), buf); sprintf(buf, "%.8X", addr); gtk_entry_set_text(GTK_ENTRY(descr_edit), buf); gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER); gtk_widget_show_all(dlg); if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_ACCEPT) { val = 0; sscanf(gtk_entry_get_text(GTK_ENTRY(value_edit)), "%u", &val); switch (current_searchtype) { case SEARCHTYPE_8BIT: if (val > (u32)0xFF) { val = 0xFF; } sprintf(buf, "%.8X %.4X", (addr & 0x1FFFFF) | (CHEAT_CONST8 << 24), val); break; case SEARCHTYPE_16BIT: if (val > (u32)0xFFFF) { val = 0xFFFF; } sprintf(buf, "%.8X %.4X", (addr & 0x1FFFFF) | (CHEAT_CONST16 << 24), val); break; case SEARCHTYPE_32BIT: sprintf(buf, "%.8X %.4X\n%.8X %.4X", (addr & 0x1FFFFF) | (CHEAT_CONST16 << 24), val & 0xFFFF, ((addr + 2) & 0x1FFFFF) | (CHEAT_CONST16 << 24), ((val & 0xFFFF0000) >> 16) & 0xFFFF); break; default: assert(FALSE); // should not reach here break; } if (AddCheat(gtk_entry_get_text(GTK_ENTRY(descr_edit)), buf) == 0) { Cheats[NumCheats - 1].Enabled = 1; } }