1
0
Fork 0

GUI: open source file and show source file in directory options for the SourceView

This commit is contained in:
mrexodia 2016-10-07 19:45:31 +02:00
parent 5ca4802f18
commit 862ccbfb2d
No known key found for this signature in database
GPG Key ID: FC89E0AAA0C1AAD8
3 changed files with 38 additions and 0 deletions

View File

@ -5,6 +5,7 @@
#include <QLineEdit>
#include <QCheckBox>
#include "SearchListViewTable.h"
#include "MenuBuilder.h"
namespace Ui
{
@ -46,6 +47,8 @@ signals:
protected:
bool eventFilter(QObject* obj, QEvent* event);
#include "ActionHelpers.h"
private:
QCheckBox* mRegexCheckbox;
QCheckBox* mLockCheckbox;

View File

@ -2,6 +2,9 @@
#include <QFile>
#include <QTextStream>
#include <QMessageBox>
#include <QProcess>
#include <QDir>
#include <QDesktopServices>
#include "Configuration.h"
SourceView::SourceView(QString path, int line, QWidget* parent)
@ -16,11 +19,17 @@ SourceView::SourceView(QString path, int line, QWidget* parent)
addColumnAt(6, tr("Line"));
addColumnAt(0, tr("Code"));
connect(this, SIGNAL(listContextMenuSignal(QMenu*)), this, SLOT(sourceContextMenu(QMenu*)));
loadFile();
setSelection(line);
auto cip = DbgValFromString("cip");
mList->disassembleAtSlot(0, cip);
mSearchList->disassembleAtSlot(0, cip);
mMenuBuilder = new MenuBuilder(this);
mMenuBuilder->addAction(makeAction(tr("Open source file"), SLOT(openSourceFileSlot())));
mMenuBuilder->addAction(makeAction(tr("Show source file in directory"), SLOT(showInDirectorySlot())));
}
void SourceView::setSelection(int line)
@ -58,3 +67,22 @@ void SourceView::loadFile()
reloadData();
file.close();
}
void SourceView::sourceContextMenu(QMenu* menu)
{
menu->addSeparator();
mMenuBuilder->build(menu);
}
void SourceView::openSourceFileSlot()
{
QDesktopServices::openUrl(QUrl::fromLocalFile(mSourcePath));
}
void SourceView::showInDirectorySlot()
{
QStringList args;
args << "/select," << QDir::toNativeSeparators(mSourcePath);
auto process = new QProcess(this);
process->start("explorer.exe", args);
}

View File

@ -16,9 +16,16 @@ public:
void setupContextMenu();
void setSelection(int line);
private slots:
void sourceContextMenu(QMenu* menu);
void openSourceFileSlot();
void showInDirectorySlot();
private:
QString mSourcePath;
int mIpLine;
MenuBuilder* mMenuBuilder;
void loadFile();
};