2 // BreakpointsWin.cpp - Breakpoints
6 // JPM = Jean-Paul Mari <djipi.mari@gmail.com>
9 // --- ---------- -----------------------------------------------------------
10 // JPM 30/08/2017 Created this file
11 // JPM Oct./2018 Added the breakpoints features
17 #include "debugger/BreakpointsWin.h"
19 #include "debugger/DBGManager.h"
23 BreakpointsWindow::BreakpointsWindow(QWidget
* parent
/*= 0*/) : QWidget(parent
, Qt::Dialog
),
24 TableView(new QTableView
),
25 model(new QStandardItemModel
),
27 statusbar(new QStatusBar
),
29 #ifdef BRK_REFRESHBUTTON
30 refresh(new QPushButton(tr("Refresh"))),
32 layout(new QVBoxLayout
)
34 setWindowTitle(tr("Breakpoints"));
38 QHBoxLayout
*hbox1
= new QHBoxLayout
;
39 hbox1
->addWidget(refresh
);
43 QFont
fixedFont("Lucida Console", 8, QFont::Normal
);
44 fixedFont
.setStyleHint(QFont::TypeWriter
);
46 // Set the new layout with proper identation and readibility
47 model
->setColumnCount(3);
48 model
->setHeaderData(0, Qt::Horizontal
, QObject::tr("Status"));
49 model
->setHeaderData(1, Qt::Horizontal
, QObject::tr("Name"));
51 model
->setHeaderData(2, Qt::Horizontal
, QObject::tr("Hit Count"));
54 TableView
->setModel(model
);
55 TableView
->setEditTriggers(QAbstractItemView::NoEditTriggers
);
56 TableView
->setShowGrid(0);
57 TableView
->setFont(fixedFont
);
58 TableView
->verticalHeader()->setDefaultSectionSize(TableView
->verticalHeader()->minimumSectionSize());
59 TableView
->verticalHeader()->setDefaultAlignment(Qt::AlignRight
);
60 layout
->addWidget(TableView
);
64 layout
->addWidget(statusbar
);
67 #ifdef BRK_REFRESHBUTTON
68 layout
->addLayout(hbox1
);
72 #ifdef BRK_REFRESHBUTTON
73 connect(refresh
, SIGNAL(clicked()), this, SLOT(RefreshContents()));
79 BreakpointsWindow::~BreakpointsWindow(void)
85 void BreakpointsWindow::UpdateInfos(void)
91 // Display the BPM as first breakpoint
92 model
->setItem(0, 0, new QStandardItem(QString("%1").arg(bpmSaveActive
? "BPM On" : "BPM Off")));
95 sprintf(Addresse
, "0x%06X", bpmAddress1
);
99 strcpy(Addresse
, "(null)");
101 model
->setItem(0, 1, new QStandardItem(QString("%1").arg((bpmAddress1
&& (FuncName
= DBGManager_GetSymbolNameFromAdr(bpmAddress1
))) ? FuncName
: Addresse
)));
103 model
->setItem(0, 2, new QStandardItem(QString("%1").arg(bpmHitCounts
)));
106 // Display all user breakpoints
107 for (size_t i
= 0; i
< brkNbr
; i
++)
111 model
->setItem((i
+ 1), 0, new QStandardItem(QString("%1").arg(brkInfo
[i
].Active
? "On" : "Off")));
112 sprintf(Addresse
, "0x%06X", brkInfo
[i
].Adr
);
113 model
->setItem((i
+ 1), 1, new QStandardItem(QString("%1").arg((FuncName
= brkInfo
[i
].Name
) ? FuncName
: Addresse
)));
114 model
->setItem((i
+ 1), 2, new QStandardItem(QString("%1").arg(brkInfo
[i
].HitCounts
)));
121 void BreakpointsWindow::Reset(void)
128 void BreakpointsWindow::UpdateTable(bool refresh
)
132 model
->setRowCount(0);
133 model
->insertRow(brkNbr
+ 1);
139 void BreakpointsWindow::RefreshContents(void)
150 void BreakpointsWindow::keyPressEvent(QKeyEvent
* e
)
152 if (e
->key() == Qt::Key_Escape
)