console: Add a Qt debug tab
Add a tab for Qt debug features. Initially provides access to dumpObjectTree() on Application and MainWindow objects. This dumps the object's child objects to the log.
This commit is contained in:
parent
32367d2d45
commit
0271f43cc9
|
@ -8,17 +8,24 @@
|
||||||
|
|
||||||
#include "core/application.h"
|
#include "core/application.h"
|
||||||
#include "core/database.h"
|
#include "core/database.h"
|
||||||
|
#include "core/logging.h"
|
||||||
|
|
||||||
Console::Console(Application* app, QWidget* parent)
|
Console::Console(Application* app, QWidget* parent)
|
||||||
: QDialog(parent), app_(app) {
|
: QDialog(parent), app_(app) {
|
||||||
ui_.setupUi(this);
|
ui_.setupUi(this);
|
||||||
connect(ui_.database_run, SIGNAL(clicked()), SLOT(RunQuery()));
|
connect(ui_.database_run, SIGNAL(clicked()), SLOT(RunQuery()));
|
||||||
|
connect(ui_.qt_dump_button, SIGNAL(clicked()), SLOT(Dump()));
|
||||||
|
|
||||||
QFont font("Monospace");
|
QFont font("Monospace");
|
||||||
font.setStyleHint(QFont::TypeWriter);
|
font.setStyleHint(QFont::TypeWriter);
|
||||||
|
|
||||||
ui_.database_output->setFont(font);
|
ui_.database_output->setFont(font);
|
||||||
ui_.database_query->setFont(font);
|
ui_.database_query->setFont(font);
|
||||||
|
|
||||||
|
QList<QObject*> objs = GetTopLevelObjects();
|
||||||
|
for (QObject* obj : objs)
|
||||||
|
ui_.qt_dump_box->addItem(obj->objectName() + " object tree",
|
||||||
|
obj->objectName());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::RunQuery() {
|
void Console::RunQuery() {
|
||||||
|
@ -45,3 +52,28 @@ void Console::RunQuery() {
|
||||||
ui_.database_output->verticalScrollBar()->setValue(
|
ui_.database_output->verticalScrollBar()->setValue(
|
||||||
ui_.database_output->verticalScrollBar()->maximum());
|
ui_.database_output->verticalScrollBar()->maximum());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Console::Dump() {
|
||||||
|
QString item = ui_.qt_dump_box->currentData().toString();
|
||||||
|
QObject* obj = FindTopLevelObject(item);
|
||||||
|
if (obj == nullptr) {
|
||||||
|
qLog(Error) << "Object not found" << item;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
obj->dumpObjectTree();
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QObject*> Console::GetTopLevelObjects() {
|
||||||
|
QList<QObject*> objs;
|
||||||
|
objs << app_;
|
||||||
|
// The parent should be the main window.
|
||||||
|
if (parent() != nullptr) objs << parent();
|
||||||
|
|
||||||
|
return objs;
|
||||||
|
}
|
||||||
|
|
||||||
|
QObject* Console::FindTopLevelObject(QString& name) {
|
||||||
|
for (QObject* obj : GetTopLevelObjects())
|
||||||
|
if (obj->objectName() == name) return obj;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
|
@ -13,9 +13,14 @@ class Console : public QDialog {
|
||||||
Console(Application* app, QWidget* parent = nullptr);
|
Console(Application* app, QWidget* parent = nullptr);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
// Database
|
||||||
void RunQuery();
|
void RunQuery();
|
||||||
|
// Qt
|
||||||
|
void Dump();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QList<QObject*> GetTopLevelObjects();
|
||||||
|
QObject* FindTopLevelObject(QString& name);
|
||||||
Ui::Console ui_;
|
Ui::Console ui_;
|
||||||
Application* app_;
|
Application* app_;
|
||||||
};
|
};
|
||||||
|
|
|
@ -48,6 +48,51 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QWidget" name="qt_tab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Qt</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="qt_dump_group">
|
||||||
|
<property name="title">
|
||||||
|
<string>Dump To Logs</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="qt_dump_box"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="qt_dump_button">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>100</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>dump</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
|
Loading…
Reference in New Issue