1
0
Fork 0

GUI: switch view in memory map (all pages)

This commit is contained in:
Mr. eXoDia 2014-08-06 14:39:46 +02:00
parent 07183f91d4
commit 538d86f42e
2 changed files with 31 additions and 0 deletions

View File

@ -34,6 +34,10 @@ void MemoryMapView::setupContextMenu()
connect(mFollowDisassembly, SIGNAL(triggered()), this, SLOT(followDisassemblerSlot())); connect(mFollowDisassembly, SIGNAL(triggered()), this, SLOT(followDisassemblerSlot()));
connect(this, SIGNAL(enterPressedSignal()), this, SLOT(followDisassemblerSlot())); connect(this, SIGNAL(enterPressedSignal()), this, SLOT(followDisassemblerSlot()));
//Switch View
mSwitchView = new QAction("&Switch View", this);
connect(mSwitchView, SIGNAL(triggered()), this, SLOT(switchView()));
//Breakpoint menu //Breakpoint menu
mBreakpointMenu = new QMenu("Memory &Breakpoint", this); mBreakpointMenu = new QMenu("Memory &Breakpoint", this);
@ -98,6 +102,7 @@ void MemoryMapView::contextMenuSlot(const QPoint & pos)
QMenu* wMenu = new QMenu(this); //create context menu QMenu* wMenu = new QMenu(this); //create context menu
wMenu->addAction(mFollowDisassembly); wMenu->addAction(mFollowDisassembly);
wMenu->addAction(mFollowDump); wMenu->addAction(mFollowDump);
wMenu->addAction(mSwitchView);
wMenu->addSeparator(); wMenu->addSeparator();
wMenu->addMenu(mBreakpointMenu); wMenu->addMenu(mBreakpointMenu);
QMenu wCopyMenu("&Copy", this); QMenu wCopyMenu("&Copy", this);
@ -202,6 +207,17 @@ QString MemoryMapView::paintContent(QPainter* painter, int_t rowBase, int rowOff
return ""; return "";
} }
} }
else if(col == 4) //CPROT
{
duint setting = 0;
QString wStr = StdTable::paintContent(painter, rowBase, rowOffset, col, x, y, w, h);;
if(BridgeSettingGetUint("Engine", "ListAllPages", &setting) && !setting)
{
painter->setPen(ConfigColor("MemoryMapSectionTextColor"));
painter->drawText(QRect(x + 4, y, getColumnWidth(col) - 4, getRowHeight()), Qt::AlignVCenter | Qt::AlignLeft, wStr);
return "";
}
}
return StdTable::paintContent(painter, rowBase, rowOffset, col, x, y, w, h); return StdTable::paintContent(painter, rowBase, rowOffset, col, x, y, w, h);
} }
@ -354,3 +370,16 @@ void MemoryMapView::memoryExecuteSingleshootToggleSlot()
else else
memoryExecuteSingleshootSlot(); memoryExecuteSingleshootSlot();
} }
void MemoryMapView::switchView()
{
duint setting = 0;
if(BridgeSettingGetUint("Engine", "ListAllPages", &setting) && setting)
BridgeSettingSetUint("Engine", "ListAllPages", 0);
else
BridgeSettingSetUint("Engine", "ListAllPages", 1);
DbgFunctions()->MemUpdateMap();
stateChangedSlot(paused);
setSingleSelection(0);
setTableOffset(0);
}

View File

@ -30,12 +30,14 @@ public slots:
void memoryRemoveSlot(); void memoryRemoveSlot();
void memoryExecuteSingleshootToggleSlot(); void memoryExecuteSingleshootToggleSlot();
void contextMenuSlot(const QPoint & pos); void contextMenuSlot(const QPoint & pos);
void switchView();
private: private:
QString getProtectionString(DWORD Protect); QString getProtectionString(DWORD Protect);
QAction* mFollowDump; QAction* mFollowDump;
QAction* mFollowDisassembly; QAction* mFollowDisassembly;
QAction* mSwitchView;
QMenu* mBreakpointMenu; QMenu* mBreakpointMenu;
QMenu* mMemoryAccessMenu; QMenu* mMemoryAccessMenu;