#include "Mainwindow.hxx"
#include "qt.hxx"
#include "disassembler/llvm/LLVMDisassembler.hxx"
+#include "widgets/CFGScene.hxx"
#include <iostream>
#include <sstream>
fileMenu->addSeparator();
fileMenu->addAction(exitAction);
+ scripting = new ScriptingDock(tr("Scripting"), this);
+ scripting->setAllowedAreas(Qt::BottomDockWidgetArea);
+ addDockWidget(Qt::BottomDockWidgetArea, scripting);
+
listWidget = new QListWidget();
stackedWidget = new QStackedWidget();
dockWidget = new QDockWidget(tr("Functions"), this);
BasicBlockWidget *
local__add_basic_block(BasicBlock * block, Disassembler * dis,
std::map<uint64_t, BasicBlockWidget*>& known_blocks,
- QGraphicsScene * scene, uint64_t starty, uint64_t startx) {
+ CFGScene * scene, uint64_t starty, uint64_t startx) {
decltype(known_blocks.begin()) old;
if ((old = known_blocks.find(block->getStartAddress())) != known_blocks.end())
scene->addItem(widget);
widget->setFlag(QGraphicsItem::ItemIsMovable, true);
- widget->moveBy(100*startx, 10*(block->getStartAddress() - starty));
+ widget->moveBy(100*startx, block->getStartAddress() - starty);
dis->printEachInstruction(block->getStartAddress(), block->getEndAddress(),
[&](uint8_t* bytes, size_t byte_count, const std::string& line) {
BasicBlockWidget *tmp, *nextl(NULL), *nextr(NULL);
BasicBlock * tmpblock;
if (block->getNextBlock(0) != 0) {
+ int xshift = 0;
+ if (block->getNextBlock(1) != 0)
+ xshift = 1;
tmpblock = dis->getBasicBlock(block->getNextBlock(0));
tmp = local__add_basic_block(tmpblock, dis,
known_blocks,
- scene, starty, startx+1);
+ scene, starty, startx+xshift);
nextl = tmp;
tmp->addPrevious(widget);
}
QTabWidget * w = new QTabWidget();
// CFG
- QGraphicsScene * scene = new QGraphicsScene;
+ CFGScene * scene = new CFGScene;
BasicBlock * block = disassembler->getBasicBlock(fun->getStartAddress());