1
0
Fork 0

Allow registers to be resized smaller & use default scrollbar style

This commit is contained in:
torusrxxx 2021-03-28 20:56:48 +08:00
parent c12eb532c7
commit af3c415f22
No known key found for this signature in database
GPG Key ID: A795C73A0F1CFADD
6 changed files with 37 additions and 41 deletions

View File

@ -68,6 +68,7 @@ CPUWidget::CPUWidget(QWidget* parent) : QWidget(parent), ui(new Ui::CPUWidget)
QScrollArea* upperScrollArea = new QScrollArea(this);
upperScrollArea->setFrameShape(QFrame::NoFrame);
upperScrollArea->setWidget(mGeneralRegs);
upperScrollArea->setWidgetResizable(true);
QPushButton* button_changeview = new QPushButton("", this);
connect(button_changeview, SIGNAL(clicked()), mGeneralRegs, SLOT(onChangeFPUViewAction()));

View File

@ -1163,6 +1163,7 @@ RegistersView::RegistersView(QWidget* parent) : QScrollArea(parent), mVScrollOff
mDisplayx87rX = new QAction(tr("Display x87rX"), this);
mDisplayMMX = new QAction(tr("Display MMX"), this);
// Create the SIMD display mode actions
SIMDHex = new QAction(tr("Hexadecimal"), mSwitchSIMDDispMode);
SIMDFloat = new QAction(tr("Float"), mSwitchSIMDDispMode);
SIMDDouble = new QAction(tr("Double"), mSwitchSIMDDispMode);
@ -1175,6 +1176,7 @@ RegistersView::RegistersView(QWidget* parent) : QScrollArea(parent), mVScrollOff
SIMDHWord = new QAction(tr("Hexadecimal Word"), mSwitchSIMDDispMode);
SIMDHDWord = new QAction(tr("Hexadecimal Dword"), mSwitchSIMDDispMode);
SIMDHQWord = new QAction(tr("Hexadecimal Qword"), mSwitchSIMDDispMode);
// Set the user data of these actions to the config value
SIMDHex->setData(QVariant(0));
SIMDFloat->setData(QVariant(1));
SIMDDouble->setData(QVariant(2));
@ -1205,6 +1207,7 @@ RegistersView::RegistersView(QWidget* parent) : QScrollArea(parent), mVScrollOff
connect(mDisplaySTX, SIGNAL(triggered()), this, SLOT(onFpuMode()));
connect(mDisplayx87rX, SIGNAL(triggered()), this, SLOT(onFpuMode()));
connect(mDisplayMMX, SIGNAL(triggered()), this, SLOT(onFpuMode()));
// Make SIMD display mode actions checkable and unchecked
SIMDHex->setCheckable(true);
SIMDFloat->setCheckable(true);
SIMDDouble->setCheckable(true);
@ -1620,11 +1623,11 @@ void RegistersView::keyPressEvent(QKeyEvent* event)
QScrollArea::keyPressEvent(event);
}
QSize RegistersView::sizeHint() const
{
// 32 character width
return QSize(32 * mCharWidth, this->viewport()->height());
}
//QSize RegistersView::sizeHint() const
//{
// // 32 character width
// return QSize(32 * mCharWidth, this->viewport()->height());
//}
void* RegistersView::operator new(size_t size)
{
@ -2201,6 +2204,7 @@ void RegistersView::appendRegister(QString & text, REGISTER_NAME reg, const char
void RegistersView::setupSIMDModeMenu()
{
const QAction* selectedAction = nullptr;
// Find out which mode is selected by the user
switch(ConfigUint("Gui", "SIMDRegistersDisplayMode"))
{
case 0:
@ -2240,6 +2244,7 @@ void RegistersView::setupSIMDModeMenu()
selectedAction = SIMDHQWord;
break;
}
// Check that action if it is selected, uncheck otherwise
SIMDHex->setChecked(SIMDHex == selectedAction);
SIMDFloat->setChecked(SIMDFloat == selectedAction);
SIMDDouble->setChecked(SIMDDouble == selectedAction);
@ -2512,8 +2517,8 @@ int RegistersView::CompareRegisters(const REGISTER_NAME reg_name, REGDUMP* regdu
if(size != 0)
return memcmp(reg1_data, reg2_data, size);
return -1;
else
return -1;
}
char* RegistersView::registerValue(const REGDUMP* regd, const REGISTER_NAME reg)
@ -2877,6 +2882,7 @@ void RegistersView::setRegisters(REGDUMP* reg)
emit refresh();
}
// Scroll the viewport so that the register will be visible on the screen
void RegistersView::ensureRegisterVisible(REGISTER_NAME reg)
{
QScrollArea* upperScrollArea = (QScrollArea*)this->parentWidget()->parentWidget();

View File

@ -130,7 +130,7 @@ public:
explicit RegistersView(QWidget* parent);
~RegistersView();
QSize sizeHint() const;
//QSize sizeHint() const;
static void* operator new(size_t size);
static void operator delete(void* p);

View File

@ -1,4 +1,3 @@
#include <QMouseEvent>
#include "TraceRegisters.h"
#include "Configuration.h"
#include "EditFloatRegister.h"
@ -6,8 +5,8 @@
TraceRegisters::TraceRegisters(QWidget* parent) : RegistersView(parent)
{
wCM_CopySSERegister = setupAction(DIcon("copy.png"), tr("Copy floating point value"));
connect(wCM_CopySSERegister, SIGNAL(triggered()), this, SLOT(onCopySSERegister()));
wCM_CopySIMDRegister = setupAction(DIcon("copy.png"), tr("Copy floating point value"));
connect(wCM_CopySIMDRegister, SIGNAL(triggered()), this, SLOT(onCopySIMDRegister()));
connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(displayCustomContextMenuSlot(QPoint)));
}
@ -38,7 +37,7 @@ void TraceRegisters::displayCustomContextMenuSlot(QPoint pos)
}
if(mFPUMMX.contains(mSelected) || mFPUXMM.contains(mSelected) || mFPUYMM.contains(mSelected))
{
wMenu.addAction(wCM_CopySSERegister);
wMenu.addAction(wCM_CopySIMDRegister);
}
if(mLABELDISPLAY.contains(mSelected))
{
@ -80,33 +79,22 @@ void TraceRegisters::displayCustomContextMenuSlot(QPoint pos)
}
}
void TraceRegisters::onCopySSERegister()
static void showCopyFloatRegister(int bits, QWidget* parent, const QString & title, char* registerData)
{
EditFloatRegister mEditFloat(bits, parent);
mEditFloat.setWindowTitle(title);
mEditFloat.loadData(registerData);
mEditFloat.show();
mEditFloat.selectAllText();
mEditFloat.exec();
}
void TraceRegisters::onCopySIMDRegister()
{
if(mFPUYMM.contains(mSelected))
{
EditFloatRegister mEditFloat(256, this);
mEditFloat.setWindowTitle(tr("View YMM register"));
mEditFloat.loadData(registerValue(&wRegDumpStruct, mSelected));
mEditFloat.show();
mEditFloat.selectAllText();
mEditFloat.exec();
}
showCopyFloatRegister(256, this, tr("View YMM register"), registerValue(&wRegDumpStruct, mSelected));
else if(mFPUXMM.contains(mSelected))
{
EditFloatRegister mEditFloat(128, this);
mEditFloat.setWindowTitle(tr("View XMM register"));
mEditFloat.loadData(registerValue(&wRegDumpStruct, mSelected));
mEditFloat.show();
mEditFloat.selectAllText();
mEditFloat.exec();
}
showCopyFloatRegister(128, this, tr("View XMM register"), registerValue(&wRegDumpStruct, mSelected));
else if(mFPUMMX.contains(mSelected))
{
EditFloatRegister mEditFloat(64, this);
mEditFloat.setWindowTitle(tr("View MMX register"));
mEditFloat.loadData(registerValue(&wRegDumpStruct, mSelected));
mEditFloat.show();
mEditFloat.selectAllText();
mEditFloat.exec();
}
showCopyFloatRegister(64, this, tr("View MMX register"), registerValue(&wRegDumpStruct, mSelected));
}

View File

@ -13,10 +13,10 @@ public:
public slots:
virtual void displayCustomContextMenuSlot(QPoint pos);
void onCopySSERegister();
void onCopySIMDRegister();
private:
QAction* wCM_CopySSERegister;
QAction* wCM_CopySIMDRegister;
};
#endif // TRACEREGISTERS_H

View File

@ -24,9 +24,10 @@ TraceWidget::TraceWidget(QWidget* parent) :
QScrollArea* upperScrollArea = new QScrollArea(this);
upperScrollArea->setFrameShape(QFrame::NoFrame);
upperScrollArea->setWidget(mGeneralRegs);
upperScrollArea->setWidgetResizable(true);
upperScrollArea->horizontalScrollBar()->setStyleSheet(ConfigHScrollBarStyle());
upperScrollArea->verticalScrollBar()->setStyleSheet(ConfigVScrollBarStyle());
//upperScrollArea->horizontalScrollBar()->setStyleSheet(ConfigHScrollBarStyle());
//upperScrollArea->verticalScrollBar()->setStyleSheet(ConfigVScrollBarStyle());
QPushButton* button_changeview = new QPushButton("", this);
button_changeview->setStyleSheet("Text-align:left;padding: 4px;padding-left: 10px;");