void DebuggerPanel::HandleCommand(wxCommandEvent& event) { PPCThread* thr = (PPCThread*)event.GetClientData(); switch(event.GetId()) { case DID_CREATE_THREAD: m_nb->AddPage(new InterpreterDisAsmFrame(m_nb, thr), thr->GetFName()); break; case DID_REMOVE_THREAD: for(uint i=0; i<m_nb->GetPageCount(); ++i) { InterpreterDisAsmFrame* page = (InterpreterDisAsmFrame*)m_nb->GetPage(i); if(page->CPU.GetId() == thr->GetId()) { m_nb->DeletePage(i); break; } } break; } event.Skip(); }
void InterpreterDisAsmFrame::HandleCommand(wxCommandEvent& event) { PPCThread* thr = (PPCThread*)event.GetClientData(); event.Skip(); if(!thr) { switch(event.GetId()) { case DID_STOPPED_EMU: UpdateUnitList(); break; case DID_PAUSED_EMU: //DoUpdate(); break; } } else if(CPU && thr->GetId() == CPU->GetId()) { switch(event.GetId()) { case DID_PAUSE_THREAD: m_btn_run->Disable(); m_btn_step->Disable(); m_btn_pause->Disable(); break; case DID_PAUSED_THREAD: m_btn_run->Enable(); m_btn_step->Enable(); m_btn_pause->Disable(); DoUpdate(); break; case DID_START_THREAD: case DID_EXEC_THREAD: case DID_RESUME_THREAD: m_btn_run->Disable(); m_btn_step->Disable(); m_btn_pause->Enable(); break; case DID_REMOVE_THREAD: case DID_STOP_THREAD: m_btn_run->Disable(); m_btn_step->Disable(); m_btn_pause->Disable(); if(event.GetId() == DID_REMOVE_THREAD) { //m_choice_units->SetSelection(-1); //wxCommandEvent event; //event.SetInt(-1); //event.SetClientData(nullptr); //OnSelectUnit(event); UpdateUnitList(); //DoUpdate(); } break; } } else { switch(event.GetId()) { case DID_CREATE_THREAD: UpdateUnitList(); if(m_choice_units->GetSelection() == -1) { //m_choice_units->SetSelection(0); //wxCommandEvent event; //event.SetInt(0); //event.SetClientData(&Emu.GetCPU().GetThreads()[0]); //OnSelectUnit(event); } break; case DID_REMOVED_THREAD: UpdateUnitList(); break; } } }