mirror of https://github.com/mgba-emu/mgba.git
Qt: Debugger console history
This commit is contained in:
parent
cf28e05f1a
commit
086a34103d
1
CHANGES
1
CHANGES
|
@ -130,6 +130,7 @@ Misc:
|
||||||
- GB: Improved SGB2 support
|
- GB: Improved SGB2 support
|
||||||
- Libretro: Reduce rumble callbacks
|
- Libretro: Reduce rumble callbacks
|
||||||
- Debugger: Minor text fixes
|
- Debugger: Minor text fixes
|
||||||
|
- Qt: Debugger console history
|
||||||
|
|
||||||
0.7 beta 1: (2018-09-24)
|
0.7 beta 1: (2018-09-24)
|
||||||
- Initial beta for 0.7
|
- Initial beta for 0.7
|
||||||
|
|
|
@ -17,6 +17,8 @@ DebuggerConsole::DebuggerConsole(DebuggerConsoleController* controller, QWidget*
|
||||||
{
|
{
|
||||||
m_ui.setupUi(this);
|
m_ui.setupUi(this);
|
||||||
|
|
||||||
|
m_ui.prompt->installEventFilter(this);
|
||||||
|
|
||||||
connect(m_ui.prompt, &QLineEdit::returnPressed, this, &DebuggerConsole::postLine);
|
connect(m_ui.prompt, &QLineEdit::returnPressed, this, &DebuggerConsole::postLine);
|
||||||
connect(controller, &DebuggerConsoleController::log, this, &DebuggerConsole::log);
|
connect(controller, &DebuggerConsoleController::log, this, &DebuggerConsole::log);
|
||||||
connect(m_ui.breakpoint, &QAbstractButton::clicked, controller, &DebuggerController::attach);
|
connect(m_ui.breakpoint, &QAbstractButton::clicked, controller, &DebuggerController::attach);
|
||||||
|
@ -36,7 +38,47 @@ void DebuggerConsole::postLine() {
|
||||||
if (line.isEmpty()) {
|
if (line.isEmpty()) {
|
||||||
m_consoleController->enterLine(QString("\n"));
|
m_consoleController->enterLine(QString("\n"));
|
||||||
} else {
|
} else {
|
||||||
|
m_history.append(line);
|
||||||
|
m_historyOffset = 0;
|
||||||
log(QString("> %1\n").arg(line));
|
log(QString("> %1\n").arg(line));
|
||||||
m_consoleController->enterLine(line);
|
m_consoleController->enterLine(line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DebuggerConsole::eventFilter(QObject*, QEvent* event) {
|
||||||
|
if (event->type() != QEvent::KeyPress) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (m_history.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
|
||||||
|
switch (keyEvent->key()) {
|
||||||
|
case Qt::Key_Down:
|
||||||
|
if (m_historyOffset <= 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
--m_historyOffset;
|
||||||
|
break;
|
||||||
|
case Qt::Key_Up:
|
||||||
|
if (m_historyOffset >= m_history.size()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
++m_historyOffset;
|
||||||
|
break;
|
||||||
|
case Qt::Key_End:
|
||||||
|
m_historyOffset = 0;
|
||||||
|
break;
|
||||||
|
case Qt::Key_Home:
|
||||||
|
m_historyOffset = m_history.size();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (m_historyOffset == 0) {
|
||||||
|
m_ui.prompt->clear();
|
||||||
|
} else {
|
||||||
|
m_ui.prompt->setText(m_history[m_history.size() - m_historyOffset]);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -21,8 +21,13 @@ private slots:
|
||||||
void log(const QString&);
|
void log(const QString&);
|
||||||
void postLine();
|
void postLine();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool eventFilter(QObject*, QEvent*) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::DebuggerConsole m_ui;
|
Ui::DebuggerConsole m_ui;
|
||||||
|
QStringList m_history;
|
||||||
|
int m_historyOffset;
|
||||||
|
|
||||||
DebuggerConsoleController* m_consoleController;
|
DebuggerConsoleController* m_consoleController;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue