1
0
Fork 0

Improve the StructWidget more (save columns, performance improvements)

This commit is contained in:
Duncan Ogilvie 2022-06-20 01:53:34 +02:00
parent b7402c2fb9
commit f37b56c18d
7 changed files with 55 additions and 4 deletions

View File

@ -727,6 +727,6 @@ bool cbInstrParseTypes(int argc, char* argv[])
}
if(!ParseTypes(data, owner))
return false;
dputs("Types parsed");
dprintf("Parsed header: %s\n", argv[1]);
return true;
}

View File

@ -102,6 +102,16 @@ int CPUMultiDump::getMaxCPUTabs()
return mMaxCPUDumpTabs;
}
void CPUMultiDump::saveWindowSettings()
{
mStructWidget->saveWindowSettings();
}
void CPUMultiDump::loadWindowSettings()
{
mStructWidget->loadWindowSettings();
}
int CPUMultiDump::GetDumpWindowIndex(int dump)
{
QString dumpNativeName = QString("Dump ") + QString::number(dump);

View File

@ -19,6 +19,8 @@ public:
void getTabNames(QList<QString> & names);
int getMaxCPUTabs();
QMenu* mDumpPluginMenu;
void saveWindowSettings();
void loadWindowSettings();
signals:
void displayReferencesWidget();

View File

@ -117,6 +117,7 @@ void CPUWidget::saveWindowSettings()
saveSplitter(ui->mTopLeftUpperHSplitter, "mTopLeftUpperHSplitter");
saveSplitter(ui->mTopRightVSplitter, "mTopRightVSplitter");
saveSplitter(ui->mBotHSplitter, "mBotHSplitter");
mDump->saveWindowSettings();
}
void CPUWidget::loadWindowSettings()
@ -127,6 +128,7 @@ void CPUWidget::loadWindowSettings()
loadSplitter(ui->mTopLeftUpperHSplitter, "mTopLeftUpperHSplitter");
loadSplitter(ui->mTopRightVSplitter, "mTopRightVSplitter");
loadSplitter(ui->mBotHSplitter, "mBotHSplitter");
mDump->loadWindowSettings();
}
CPUWidget::~CPUWidget()

View File

@ -41,6 +41,32 @@ StructWidget::~StructWidget()
delete ui;
}
void StructWidget::saveWindowSettings()
{
auto saveColumn = [this](int column)
{
auto settingName = QString("StructWidgetColumn%1").arg(column);
BridgeSettingSetUint("Gui", settingName.toUtf8().constData(), ui->treeWidget->columnWidth(column));
};
saveColumn(0);
saveColumn(1);
saveColumn(2);
}
void StructWidget::loadWindowSettings()
{
auto loadColumn = [this](int column)
{
auto settingName = QString("StructWidgetColumn%1").arg(column);
duint width = 0;
if(BridgeSettingGetUint("Gui", settingName.toUtf8().constData(), &width))
ui->treeWidget->setColumnWidth(column, width);
};
loadColumn(0);
loadColumn(1);
loadColumn(2);
}
void StructWidget::colorsUpdatedSlot()
{
auto color = ConfigColor("AbstractTableViewTextColor");
@ -65,6 +91,9 @@ void StructWidget::shortcutsUpdatedSlot()
void StructWidget::typeAddNode(void* parent, const TYPEDESCRIPTOR* type)
{
// Disable updates until the next typeUpdateWidget()
ui->treeWidget->setUpdatesEnabled(false);
TypeDescriptor dtype;
dtype.type = *type;
dtype.name = highlightTypeName(dtype.type.name);
@ -86,6 +115,7 @@ void StructWidget::typeClear()
void StructWidget::typeUpdateWidget()
{
ui->treeWidget->setUpdatesEnabled(false);
for(QTreeWidgetItemIterator it(ui->treeWidget); *it; ++it)
{
QTreeWidgetItem* item = *it;
@ -125,6 +155,7 @@ void StructWidget::typeUpdateWidget()
}
item->setText(3, valueStr);
}
ui->treeWidget->setUpdatesEnabled(true);
}
void StructWidget::dbgStateChangedSlot(DBGSTATE state)
@ -135,9 +166,10 @@ void StructWidget::dbgStateChangedSlot(DBGSTATE state)
void StructWidget::setupColumns()
{
ui->treeWidget->setColumnWidth(0, 300); //Name
ui->treeWidget->setColumnWidth(1, 80); //Address
ui->treeWidget->setColumnWidth(2, 80); //Size
auto charWidth = ui->treeWidget->fontMetrics().width(' ');
ui->treeWidget->setColumnWidth(0, 4 + charWidth * 60); //Name
ui->treeWidget->setColumnWidth(1, 6 + charWidth * sizeof(duint) * 2); //Address
ui->treeWidget->setColumnWidth(2, 4 + charWidth * 6); //Size
//ui->treeWidget->setColumnWidth(3, 80); //Value
}

View File

@ -19,6 +19,8 @@ class StructWidget : public QWidget, public ActionHelper<StructWidget>
public:
explicit StructWidget(QWidget* parent = 0);
~StructWidget();
void saveWindowSettings();
void loadWindowSettings();
public slots:
void colorsUpdatedSlot();

View File

@ -47,6 +47,9 @@
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="indentation">
<number>10</number>
</property>
<attribute name="headerCascadingSectionResizes">
<bool>false</bool>
</attribute>