2
* This file is part of the Code::Blocks IDE and licensed under the GNU General Public License, version 3
3
* http://www.gnu.org/licenses/gpl-3.0.html
11
#include "threadsdlg.h"
12
#include "debuggergdb.h"
13
#include "debuggerdriver.h"
15
#include <wx/xrc/xmlres.h>
19
static const int idSwitch = wxNewId();
21
BEGIN_EVENT_TABLE(ThreadsDlg, wxPanel)
22
EVT_LIST_ITEM_RIGHT_CLICK(XRCID("lstThreads"), ThreadsDlg::OnListRightClick)
23
EVT_MENU(idSwitch, ThreadsDlg::OnSwitchThread)
26
ThreadsDlg::ThreadsDlg(wxWindow* parent, DebuggerGDB* debugger)
30
wxXmlResource::Get()->LoadPanel(this, parent, _T("dlgThreads"));
31
// SetWindowStyle(GetWindowStyle() | wxFRAME_FLOAT_ON_PARENT);
33
wxListCtrl* lst = XRCCTRL(*this, "lstThreads", wxListCtrl);
35
wxFont font(8, wxMODERN, wxNORMAL, wxNORMAL);
40
ThreadsDlg::~ThreadsDlg()
45
void ThreadsDlg::Clear()
47
wxListCtrl* lst = XRCCTRL(*this, "lstThreads", wxListCtrl);
50
lst->DeleteAllItems();
51
lst->InsertColumn(0, _("Active"), wxLIST_FORMAT_LEFT, 64);
52
lst->InsertColumn(1, _("Number"), wxLIST_FORMAT_RIGHT, 64);
53
lst->InsertColumn(2, _("Info"), wxLIST_FORMAT_LEFT);
57
void ThreadsDlg::AddThread(const wxString& active_mark, const wxString& thread_num, const wxString& thread_info)
59
// Manager::Get()->GetLogManager()->DebugLog(_T("Add: mark=%s, num=%s, info=%s"), active_mark.c_str(), thread_num.c_str(), thread_info.c_str());
60
wxListCtrl* lst = XRCCTRL(*this, "lstThreads", wxListCtrl);
62
lst->InsertItem(lst->GetItemCount(), active_mark);
63
int idx = lst->GetItemCount() - 1;
64
lst->SetItem(idx, 1, thread_num);
65
lst->SetItem(idx, 2, thread_info);
67
lst->SetColumnWidth(2, wxLIST_AUTOSIZE);
71
void ThreadsDlg::OnListRightClick(wxListEvent& event)
73
wxListCtrl* lst = XRCCTRL(*this, "lstThreads", wxListCtrl);
76
m.Append(idSwitch, _("Switch to this thread"));
80
void ThreadsDlg::OnSwitchThread(wxCommandEvent& event)
82
wxListCtrl* lst = XRCCTRL(*this, "lstThreads", wxListCtrl);
83
if (lst->GetSelectedItemCount() == 0)
86
// find selected item index
87
int index = lst->GetNextItem(-1,
89
wxLIST_STATE_SELECTED);
91
wxString active = lst->GetItemText(index);
92
if (active == _T("*"))
93
return; // same thread
97
info.m_itemId = index;
99
info.m_mask = wxLIST_MASK_TEXT;
100
if (lst->GetItem(info))
101
thread = info.m_text;
105
unsigned long thread_num;
106
if (thread.ToULong(&thread_num, 10))
107
if (m_pDbg->GetState().HasDriver())
108
m_pDbg->GetState().GetDriver()->SwitchThread(thread_num);
2
* This file is part of the Code::Blocks IDE and licensed under the GNU General Public License, version 3
3
* http://www.gnu.org/licenses/gpl-3.0.html
6
* $Id: threadsdlg.cpp 5931 2009-11-21 15:58:42Z biplab $
7
* $HeadURL: svn+ssh://jenslody@svn.berlios.de/svnroot/repos/codeblocks/trunk/src/plugins/debuggergdb/threadsdlg.cpp $
11
#include "threadsdlg.h"
12
#include "debuggergdb.h"
13
#include "debuggerdriver.h"
15
#include <wx/xrc/xmlres.h>
19
static const int idSwitch = wxNewId();
21
BEGIN_EVENT_TABLE(ThreadsDlg, wxPanel)
22
EVT_LIST_ITEM_RIGHT_CLICK(XRCID("lstThreads"), ThreadsDlg::OnListRightClick)
23
EVT_MENU(idSwitch, ThreadsDlg::OnSwitchThread)
26
ThreadsDlg::ThreadsDlg(wxWindow* parent, DebuggerGDB* debugger)
30
wxXmlResource::Get()->LoadPanel(this, parent, _T("dlgThreads"));
31
// SetWindowStyle(GetWindowStyle() | wxFRAME_FLOAT_ON_PARENT);
33
wxListCtrl* lst = XRCCTRL(*this, "lstThreads", wxListCtrl);
35
wxFont font(8, wxMODERN, wxNORMAL, wxNORMAL);
40
ThreadsDlg::~ThreadsDlg()
45
void ThreadsDlg::Clear()
47
wxListCtrl* lst = XRCCTRL(*this, "lstThreads", wxListCtrl);
50
lst->DeleteAllItems();
51
lst->InsertColumn(0, _("Active"), wxLIST_FORMAT_LEFT, 64);
52
lst->InsertColumn(1, _("Number"), wxLIST_FORMAT_RIGHT, 64);
53
lst->InsertColumn(2, _("Info"), wxLIST_FORMAT_LEFT);
57
void ThreadsDlg::AddThread(const wxString& active_mark, const wxString& thread_num, const wxString& thread_info)
59
// Manager::Get()->GetLogManager()->DebugLog(_T("Add: mark=%s, num=%s, info=%s"), active_mark.c_str(), thread_num.c_str(), thread_info.c_str());
60
wxListCtrl* lst = XRCCTRL(*this, "lstThreads", wxListCtrl);
62
lst->InsertItem(lst->GetItemCount(), active_mark);
63
int idx = lst->GetItemCount() - 1;
64
lst->SetItem(idx, 1, thread_num);
65
lst->SetItem(idx, 2, thread_info);
67
lst->SetColumnWidth(2, wxLIST_AUTOSIZE);
71
void ThreadsDlg::OnListRightClick(wxListEvent& event)
73
wxListCtrl* lst = XRCCTRL(*this, "lstThreads", wxListCtrl);
76
m.Append(idSwitch, _("Switch to this thread"));
80
void ThreadsDlg::OnSwitchThread(wxCommandEvent& event)
82
wxListCtrl* lst = XRCCTRL(*this, "lstThreads", wxListCtrl);
83
if (lst->GetSelectedItemCount() == 0)
86
// find selected item index
87
int index = lst->GetNextItem(-1,
89
wxLIST_STATE_SELECTED);
91
wxString active = lst->GetItemText(index);
92
if (active == _T("*"))
93
return; // same thread
97
info.m_itemId = index;
99
info.m_mask = wxLIST_MASK_TEXT;
100
if (lst->GetItem(info))
101
thread = info.m_text;
105
unsigned long thread_num;
106
if (thread.ToULong(&thread_num, 10))
107
if (m_pDbg->GetState().HasDriver())
108
m_pDbg->GetState().GetDriver()->SwitchThread(thread_num);