Improve the StructWidget more (save columns, performance improvements)
This commit is contained in:
parent
b7402c2fb9
commit
f37b56c18d
|
@ -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;
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -19,6 +19,8 @@ public:
|
|||
void getTabNames(QList<QString> & names);
|
||||
int getMaxCPUTabs();
|
||||
QMenu* mDumpPluginMenu;
|
||||
void saveWindowSettings();
|
||||
void loadWindowSettings();
|
||||
|
||||
signals:
|
||||
void displayReferencesWidget();
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue