1 #include "sdk.h"
2 #include "debuggersettingspanel.h"
3 
4 #ifndef CB_PRECOMP
5 	//(*InternalHeadersPCH(DebuggerSettingsPanel)
6 	#include <wx/string.h>
7 	#include <wx/intl.h>
8 	//*)
9 
10 	#include <wx/textdlg.h>
11 
12 	#include "cbplugin.h"
13 	#include "debuggermanager.h"
14 #endif
15 //(*InternalHeaders(DebuggerSettingsPanel)
16 //*)
17 
18 #include "debuggersettingsdlg.h"
19 
20 //(*IdInit(DebuggerSettingsPanel)
21 const long DebuggerSettingsPanel::ID_BUTTON_CREATE = wxNewId();
22 const long DebuggerSettingsPanel::ID_BUTTON_DELETE = wxNewId();
23 const long DebuggerSettingsPanel::ID_BUTTON_RESET = wxNewId();
24 const long DebuggerSettingsPanel::ID_TEXTCTRL_INFO = wxNewId();
25 //*)
26 
BEGIN_EVENT_TABLE(DebuggerSettingsPanel,wxPanel)27 BEGIN_EVENT_TABLE(DebuggerSettingsPanel,wxPanel)
28 	//(*EventTable(DebuggerSettingsPanel)
29 	//*)
30 END_EVENT_TABLE()
31 
32 DebuggerSettingsPanel::DebuggerSettingsPanel(wxWindow* parent, DebuggerSettingsDlg *dialog, cbDebuggerPlugin *plugin) :
33     m_dialog(dialog),
34     m_plugin(plugin)
35 {
36 	//(*Initialize(DebuggerSettingsPanel)
37 	wxBoxSizer* buttonSizer;
38 	wxTextCtrl* textInfo;
39 	wxButton* butReset;
40 	wxButton* butCreate;
41 	wxBoxSizer* mainSizer;
42 	wxStaticBoxSizer* infoSizer;
43 	wxButton* butDelete;
44 
45 	Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("wxID_ANY"));
46 	mainSizer = new wxBoxSizer(wxVERTICAL);
47 	buttonSizer = new wxBoxSizer(wxHORIZONTAL);
48 	butCreate = new wxButton(this, ID_BUTTON_CREATE, _("Create Config"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON_CREATE"));
49 	buttonSizer->Add(butCreate, 1, wxALIGN_BOTTOM, 5);
50 	butDelete = new wxButton(this, ID_BUTTON_DELETE, _("Delete Config"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON_DELETE"));
51 	buttonSizer->Add(butDelete, 1, wxLEFT|wxALIGN_BOTTOM, 5);
52 	butReset = new wxButton(this, ID_BUTTON_RESET, _("Reset defaults"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON_RESET"));
53 	buttonSizer->Add(butReset, 1, wxLEFT|wxALIGN_BOTTOM, 5);
54 	mainSizer->Add(buttonSizer, 0, wxALL|wxEXPAND|wxSHAPED, 0);
55 	infoSizer = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Info"));
56 	textInfo = new wxTextCtrl(this, ID_TEXTCTRL_INFO, wxEmptyString, wxDefaultPosition, wxSize(186,243), 0, wxDefaultValidator, _T("ID_TEXTCTRL_INFO"));
57 	textInfo->Disable();
58 	infoSizer->Add(textInfo, 1, wxEXPAND, 5);
59 	mainSizer->Add(infoSizer, 1, wxBOTTOM|wxLEFT|wxRIGHT|wxEXPAND, 0);
60 	SetSizer(mainSizer);
61 	mainSizer->Fit(this);
62 	mainSizer->SetSizeHints(this);
63 
64 	Connect(ID_BUTTON_CREATE,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&DebuggerSettingsPanel::OnButtonCreate);
65 	Connect(ID_BUTTON_DELETE,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&DebuggerSettingsPanel::OnButtonDelete);
66 	Connect(ID_BUTTON_RESET,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&DebuggerSettingsPanel::OnButtonReset);
67 	//*)
68 
69 	// If this debugger plugin is used to debug some program at the moment
70 	// - disable the buttons for managing its configurations.
71 	if (plugin && plugin->IsRunning())
72     {
73         butCreate->Disable();
74         butDelete->Disable();
75         butReset->Disable();
76     }
77 }
78 
~DebuggerSettingsPanel()79 DebuggerSettingsPanel::~DebuggerSettingsPanel()
80 {
81 	//(*Destroy(DebuggerSettingsPanel)
82 	//*)
83 }
84 
OnButtonCreate(cb_unused wxCommandEvent & event)85 void DebuggerSettingsPanel::OnButtonCreate(cb_unused wxCommandEvent& event)
86 {
87     wxTextEntryDialog dialog(this, _("Please specify a name for the configuration"), _("Create config"));
88     PlaceWindow(&dialog);
89     while (dialog.ShowModal() == wxID_OK)
90     {
91         wxString name = dialog.GetValue();
92         if (!name.empty())
93         {
94             if (m_dialog->CreateConfig(this, m_plugin, name))
95                 break;
96             else
97                 cbMessageBox(_("Name is not unique! Choose different one."), _("Error"), wxICON_ERROR, this);
98         }
99     }
100 }
101 
OnButtonDelete(cb_unused wxCommandEvent & event)102 void DebuggerSettingsPanel::OnButtonDelete(cb_unused wxCommandEvent& event)
103 {
104     m_dialog->DeleteConfig(this, m_plugin);
105 }
106 
OnButtonReset(cb_unused wxCommandEvent & event)107 void DebuggerSettingsPanel::OnButtonReset(cb_unused wxCommandEvent& event)
108 {
109     if (cbMessageBox(_("Are you sure you want to reset the settings for the selected plugin?"), _("Reset settings"),
110                      wxICON_QUESTION | wxYES) == wxID_NO)
111     {
112         return;
113     }
114     m_dialog->ResetConfig(this, m_plugin);
115 }
116