1
0
Fork 0

GUI: fixed small things + update colors on config change

This commit is contained in:
mrexodia 2016-12-11 09:28:01 +01:00
parent a61a6e96e0
commit 3738cff3b1
No known key found for this signature in database
GPG Key ID: FC89E0AAA0C1AAD8
2 changed files with 75 additions and 63 deletions

View File

@ -1,41 +1,49 @@
#include "BreakpointsViewTable.h" #include "BreakpointsViewTable.h"
#include "Configuration.h" #include "Configuration.h"
#include "Bridge.h"
BreakpointsViewTable::BreakpointsViewTable(QWidget* parent) BreakpointsViewTable::BreakpointsViewTable(QWidget* parent)
: StdTable(parent) : StdTable(parent)
{ {
BgColor = QColor(Qt::black); // predefined updateColors();
TxtColor = QColor(Qt::white); // predefined connect(Bridge::getBridge(), SIGNAL(disassembleAt(dsint, dsint)), this, SLOT(disassembleAtSlot(dsint, dsint)));
GetConfigColors();
} }
void BreakpointsViewTable::GetConfigColors() void BreakpointsViewTable::updateColors()
{ {
BgColor = ConfigColor("ThreadCurrentBackgroundColor"); StdTable::updateColors();
TxtColor = ConfigColor("ThreadCurrentColor"); mCipBackgroundColor = ConfigColor("ThreadCurrentBackgroundColor");
mCipColor = ConfigColor("ThreadCurrentColor");
} }
duint BreakpointsViewTable::GetCIP() { return DbgValFromString("cip"); } void BreakpointsViewTable::disassembleAtSlot(dsint cip, dsint addr)
{
Q_UNUSED(addr)
mCip = cip;
}
QString BreakpointsViewTable::paintContent(QPainter* painter, dsint rowBase, int rowOffset, int col, int x, int y, int w, int h) QString BreakpointsViewTable::paintContent(QPainter* painter, dsint rowBase, int rowOffset, int col, int x, int y, int w, int h)
{ {
duint bpAddr = 0;
QString ret = StdTable::paintContent(painter, rowBase, rowOffset, col, x, y, w, h); QString ret = StdTable::paintContent(painter, rowBase, rowOffset, col, x, y, w, h);
QString bpAddrStr = getCellContent(rowBase + rowOffset, col);
if(!col) //address
{
QString bpAddrStr = getCellContent(rowBase + rowOffset, col);
bool valid = false;
#ifdef _WIN64 #ifdef _WIN64
bpAddr = bpAddrStr.toULongLong(0, 16); duint bpAddr = bpAddrStr.toULongLong(&valid, 16);
#else //x86 #else //x86
bpAddr = bpAddrStr.toULong(0, 16); duint bpAddr = bpAddrStr.toULong(&valid, 16);
#endif //_WIN64 #endif //_WIN64
if(GetCIP() == bpAddr && !col) if(valid && bpAddr == mCip)
{ {
painter->fillRect(QRect(x, y, w, h), QBrush(BgColor)); painter->fillRect(QRect(x, y, w, h), QBrush(mCipBackgroundColor));
painter->setPen(QPen(TxtColor)); painter->setPen(QPen(mCipColor));
painter->drawText(QRect(x + 4, y , w - 4 , h), Qt::AlignVCenter | Qt::AlignLeft, bpAddrStr); painter->drawText(QRect(x + 4, y , w - 4 , h), Qt::AlignVCenter | Qt::AlignLeft, bpAddrStr);
ret = ""; ret = "";
} }
}
return ret; return ret;
} }

View File

@ -9,14 +9,18 @@ class BreakpointsViewTable : public StdTable
public: public:
explicit BreakpointsViewTable(QWidget* parent = 0); explicit BreakpointsViewTable(QWidget* parent = 0);
void GetConfigColors(); void GetConfigColors();
duint GetCIP(); void updateColors() override;
public slots:
void disassembleAtSlot(dsint cip, dsint addr);
protected: protected:
QString paintContent(QPainter* painter, dsint rowBase, int rowOffset, int col, int x, int y, int w, int h); QString paintContent(QPainter* painter, dsint rowBase, int rowOffset, int col, int x, int y, int w, int h);
private: private:
QColor BgColor; QColor mCipBackgroundColor;
QColor TxtColor; QColor mCipColor;
duint mCip;
}; };
#endif // BREAKPOINTSVIEWTABLE_H #endif // BREAKPOINTSVIEWTABLE_H