Merge pull request #4220 from aldelaro5/memcheck-interface-improvements
Redo the MemCheck add dialog
This commit is contained in:
commit
ed95115c17
|
@ -218,8 +218,8 @@ bool TMemCheck::Action(DebugInterface* debug_interface, u32 iValue, u32 addr, bo
|
||||||
debug_interface->GetDescription(pc).c_str(), write ? "Write" : "Read", size * 8,
|
debug_interface->GetDescription(pc).c_str(), write ? "Write" : "Read", size * 8,
|
||||||
size * 2, iValue, addr, debug_interface->GetDescription(addr).c_str());
|
size * 2, iValue, addr, debug_interface->GetDescription(addr).c_str());
|
||||||
}
|
}
|
||||||
|
if (Break)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,7 @@
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <wx/checkbox.h>
|
#include <wx/radiobut.h>
|
||||||
#include <wx/dialog.h>
|
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
|
@ -17,58 +16,116 @@
|
||||||
#include "DolphinWX/Debugger/MemoryCheckDlg.h"
|
#include "DolphinWX/Debugger/MemoryCheckDlg.h"
|
||||||
#include "DolphinWX/WxUtils.h"
|
#include "DolphinWX/WxUtils.h"
|
||||||
|
|
||||||
#define TEXT_BOX(text) new wxStaticText(this, wxID_ANY, _(text))
|
|
||||||
|
|
||||||
MemoryCheckDlg::MemoryCheckDlg(CBreakPointWindow* parent)
|
MemoryCheckDlg::MemoryCheckDlg(CBreakPointWindow* parent)
|
||||||
: wxDialog(parent, wxID_ANY, _("Memory Check")), m_parent(parent)
|
: wxDialog(parent, wxID_ANY, _("Add a Memory Check")), m_parent(parent)
|
||||||
{
|
{
|
||||||
Bind(wxEVT_BUTTON, &MemoryCheckDlg::OnOK, this, wxID_OK);
|
Bind(wxEVT_BUTTON, &MemoryCheckDlg::OnOK, this, wxID_OK);
|
||||||
|
Bind(wxEVT_RADIOBUTTON, &MemoryCheckDlg::OnRadioButtonClick, this);
|
||||||
|
|
||||||
m_pEditStartAddress = new wxTextCtrl(this, wxID_ANY, "");
|
m_textAddress = new wxStaticText(this, wxID_ANY, _("Address"));
|
||||||
m_pEditEndAddress = new wxTextCtrl(this, wxID_ANY, "");
|
m_textStartAddress = new wxStaticText(this, wxID_ANY, _("Start"));
|
||||||
m_pWriteFlag = new wxCheckBox(this, wxID_ANY, _("Write"));
|
m_textStartAddress->Disable();
|
||||||
m_pWriteFlag->SetValue(true);
|
m_textEndAddress = new wxStaticText(this, wxID_ANY, _("End"));
|
||||||
m_pReadFlag = new wxCheckBox(this, wxID_ANY, _("Read"));
|
m_textEndAddress->Disable();
|
||||||
|
m_pEditAddress = new wxTextCtrl(this, wxID_ANY);
|
||||||
|
m_pEditStartAddress = new wxTextCtrl(this, wxID_ANY);
|
||||||
|
m_pEditStartAddress->Disable();
|
||||||
|
m_pEditEndAddress = new wxTextCtrl(this, wxID_ANY);
|
||||||
|
m_pEditEndAddress->Disable();
|
||||||
|
m_radioAddress = new wxRadioButton(this, wxID_ANY, _("With an address"), wxDefaultPosition,
|
||||||
|
wxDefaultSize, wxRB_GROUP);
|
||||||
|
m_radioRange = new wxRadioButton(this, wxID_ANY, _("Within a range"));
|
||||||
|
m_radioRead =
|
||||||
|
new wxRadioButton(this, wxID_ANY, _("Read"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
|
||||||
|
m_radioWrite = new wxRadioButton(this, wxID_ANY, _("Write"));
|
||||||
|
m_radioReadWrite = new wxRadioButton(this, wxID_ANY, _("Read and write"));
|
||||||
|
m_radioLog =
|
||||||
|
new wxRadioButton(this, wxID_ANY, _("Log"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
|
||||||
|
m_radioBreak = new wxRadioButton(this, wxID_ANY, _("Break"));
|
||||||
|
m_radioBreakLog = new wxRadioButton(this, wxID_ANY, _("Break and log"));
|
||||||
|
m_radioBreakLog->SetValue(true);
|
||||||
|
|
||||||
m_log_flag = new wxCheckBox(this, wxID_ANY, _("Log"));
|
auto* sAddressBox = new wxBoxSizer(wxHORIZONTAL);
|
||||||
m_log_flag->SetValue(true);
|
sAddressBox->Add(m_textAddress, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
||||||
m_break_flag = new wxCheckBox(this, wxID_ANY, _("Break"));
|
sAddressBox->Add(m_pEditAddress, 1, wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM, 10);
|
||||||
|
|
||||||
wxStaticBoxSizer* sAddressRangeBox = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Address Range"));
|
auto* sAddressRangeBox = new wxBoxSizer(wxHORIZONTAL);
|
||||||
sAddressRangeBox->Add(TEXT_BOX("Start"), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
|
sAddressRangeBox->Add(m_textStartAddress, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
||||||
sAddressRangeBox->Add(m_pEditStartAddress, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
|
sAddressRangeBox->Add(m_pEditStartAddress, 1, wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM, 10);
|
||||||
sAddressRangeBox->Add(TEXT_BOX("End"), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
|
sAddressRangeBox->Add(m_textEndAddress, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
||||||
sAddressRangeBox->Add(m_pEditEndAddress, 1, wxALIGN_CENTER_VERTICAL);
|
sAddressRangeBox->Add(m_pEditEndAddress, 1, wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM, 5);
|
||||||
|
|
||||||
wxStaticBoxSizer* sActionBox = new wxStaticBoxSizer(wxVERTICAL, this, _("Action"));
|
auto* sActions = new wxStaticBoxSizer(wxVERTICAL, this, _("Action"));
|
||||||
sActionBox->Add(m_pWriteFlag);
|
sActions->Add(m_radioRead, 0, wxEXPAND);
|
||||||
sActionBox->Add(m_pReadFlag);
|
sActions->Add(m_radioWrite, 0, wxEXPAND);
|
||||||
|
sActions->Add(m_radioReadWrite, 0, wxEXPAND);
|
||||||
|
m_radioWrite->SetValue(true);
|
||||||
|
|
||||||
wxBoxSizer* sFlags = new wxStaticBoxSizer(wxVERTICAL, this, _("Flags"));
|
auto* sFlags = new wxStaticBoxSizer(wxVERTICAL, this, _("Flags"));
|
||||||
sFlags->Add(m_log_flag);
|
sFlags->Add(m_radioLog);
|
||||||
sFlags->Add(m_break_flag);
|
sFlags->Add(m_radioBreak);
|
||||||
|
sFlags->Add(m_radioBreakLog);
|
||||||
|
|
||||||
wxBoxSizer* sControls = new wxBoxSizer(wxHORIZONTAL);
|
auto* sOptionsBox = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
sOptionsBox->Add(sActions, 1, wxEXPAND | wxRIGHT | wxTOP | wxBOTTOM, 5);
|
||||||
|
sOptionsBox->Add(sFlags, 1, wxEXPAND | wxLEFT | wxTOP | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
auto* sControls = new wxBoxSizer(wxVERTICAL);
|
||||||
|
sControls->Add(m_radioAddress, 0, wxEXPAND);
|
||||||
|
sControls->Add(sAddressBox, 0, wxEXPAND);
|
||||||
|
sControls->Add(m_radioRange, 0, wxEXPAND);
|
||||||
sControls->Add(sAddressRangeBox, 0, wxEXPAND);
|
sControls->Add(sAddressRangeBox, 0, wxEXPAND);
|
||||||
sControls->Add(sActionBox, 0, wxEXPAND);
|
sControls->Add(sOptionsBox, 0, wxEXPAND);
|
||||||
sControls->Add(sFlags, 0, wxEXPAND);
|
|
||||||
|
|
||||||
wxBoxSizer* sMainSizer = new wxBoxSizer(wxVERTICAL);
|
auto* sMainSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
sMainSizer->Add(sControls, 0, wxEXPAND | wxALL, 5);
|
sMainSizer->Add(sControls, 0, wxEXPAND | wxTOP | wxRIGHT | wxLEFT, 5);
|
||||||
sMainSizer->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
sMainSizer->Add(CreateButtonSizer(wxOK | wxCANCEL), 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
SetSizerAndFit(sMainSizer);
|
SetSizerAndFit(sMainSizer);
|
||||||
SetFocus();
|
SetFocus();
|
||||||
|
m_pEditAddress->SetFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MemoryCheckDlg::OnRadioButtonClick(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
if (m_radioAddress->GetValue())
|
||||||
|
{
|
||||||
|
m_pEditAddress->Enable();
|
||||||
|
m_textAddress->Enable();
|
||||||
|
m_pEditStartAddress->Disable();
|
||||||
|
m_pEditEndAddress->Disable();
|
||||||
|
m_textStartAddress->Disable();
|
||||||
|
m_textEndAddress->Disable();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_pEditStartAddress->Enable();
|
||||||
|
m_textStartAddress->Enable();
|
||||||
|
m_textEndAddress->Enable();
|
||||||
|
m_pEditEndAddress->Enable();
|
||||||
|
m_pEditAddress->Disable();
|
||||||
|
m_textAddress->Disable();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MemoryCheckDlg::OnOK(wxCommandEvent& event)
|
void MemoryCheckDlg::OnOK(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
wxString StartAddressString = m_pEditStartAddress->GetLineText(0);
|
wxString StartAddressString;
|
||||||
wxString EndAddressString = m_pEditEndAddress->GetLineText(0);
|
wxString EndAddressString;
|
||||||
bool OnRead = m_pReadFlag->GetValue();
|
if (m_radioAddress->GetValue())
|
||||||
bool OnWrite = m_pWriteFlag->GetValue();
|
{
|
||||||
bool Log = m_log_flag->GetValue();
|
StartAddressString = m_pEditAddress->GetLineText(0);
|
||||||
bool Break = m_break_flag->GetValue();
|
EndAddressString = m_pEditAddress->GetLineText(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StartAddressString = m_pEditStartAddress->GetLineText(0);
|
||||||
|
EndAddressString = m_pEditEndAddress->GetLineText(0);
|
||||||
|
}
|
||||||
|
bool OnRead = m_radioRead->GetValue() || m_radioReadWrite->GetValue();
|
||||||
|
bool OnWrite = m_radioWrite->GetValue() || m_radioReadWrite->GetValue();
|
||||||
|
bool Log = m_radioLog->GetValue() || m_radioBreakLog->GetValue();
|
||||||
|
bool Break = m_radioBreak->GetValue() || m_radioBreakLog->GetValue();
|
||||||
|
|
||||||
u32 StartAddress, EndAddress;
|
u32 StartAddress, EndAddress;
|
||||||
bool EndAddressOK =
|
bool EndAddressOK =
|
||||||
|
|
|
@ -7,7 +7,8 @@
|
||||||
#include <wx/dialog.h>
|
#include <wx/dialog.h>
|
||||||
|
|
||||||
class CBreakPointWindow;
|
class CBreakPointWindow;
|
||||||
class wxCheckBox;
|
class wxRadioButton;
|
||||||
|
class wxStaticText;
|
||||||
class wxTextCtrl;
|
class wxTextCtrl;
|
||||||
|
|
||||||
class MemoryCheckDlg : public wxDialog
|
class MemoryCheckDlg : public wxDialog
|
||||||
|
@ -17,12 +18,21 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CBreakPointWindow* m_parent;
|
CBreakPointWindow* m_parent;
|
||||||
wxCheckBox* m_pReadFlag;
|
wxStaticText* m_textAddress;
|
||||||
wxCheckBox* m_pWriteFlag;
|
wxStaticText* m_textStartAddress;
|
||||||
wxCheckBox* m_log_flag;
|
wxStaticText* m_textEndAddress;
|
||||||
wxCheckBox* m_break_flag;
|
wxRadioButton* m_radioLog;
|
||||||
|
wxRadioButton* m_radioBreak;
|
||||||
|
wxRadioButton* m_radioBreakLog;
|
||||||
|
wxRadioButton* m_radioRead;
|
||||||
|
wxRadioButton* m_radioWrite;
|
||||||
|
wxRadioButton* m_radioReadWrite;
|
||||||
|
wxRadioButton* m_radioAddress;
|
||||||
|
wxRadioButton* m_radioRange;
|
||||||
|
wxTextCtrl* m_pEditAddress;
|
||||||
wxTextCtrl* m_pEditEndAddress;
|
wxTextCtrl* m_pEditEndAddress;
|
||||||
wxTextCtrl* m_pEditStartAddress;
|
wxTextCtrl* m_pEditStartAddress;
|
||||||
|
|
||||||
|
void OnRadioButtonClick(wxCommandEvent& event);
|
||||||
void OnOK(wxCommandEvent& event);
|
void OnOK(wxCommandEvent& event);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue