diff --git a/src/gui/Src/Tracer/TraceManager.cpp b/src/gui/Src/Tracer/TraceManager.cpp index e93d818b..ec368152 100644 --- a/src/gui/Src/Tracer/TraceManager.cpp +++ b/src/gui/Src/Tracer/TraceManager.cpp @@ -1,4 +1,7 @@ +#include #include "TraceManager.h" +#include "BrowseDialog.h" +#include "StringUtil.h" #include "MiscUtil.h" TraceManager::TraceManager(QWidget* parent) : QTabWidget(parent) @@ -22,29 +25,49 @@ TraceManager::TraceManager(QWidget* parent) : QTabWidget(parent) connect(this, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int))); - open(); + // Add a placeholder tab + QFrame* mPlaceholder = new QFrame(this); + addTab(mPlaceholder, tr("Placeholder")); //TODO: Proper title } void TraceManager::open() { + BrowseDialog browse( + this, + tr("Open trace recording"), + tr("Trace recording"), + tr("Trace recordings (*.%1);;All files (*.*)").arg(ArchValue("trace32", "trace64")), + getDbPath(), + false + ); + if(browse.exec() != QDialog::Accepted) + return; //load the new file TraceWidget* newView = new TraceWidget(this); addTab(newView, tr("Trace")); //TODO: Proper title setCurrentIndex(count() - 1); + emit newView->openSlot(browse.path); } void TraceManager::closeTab(int index) { auto view = qobject_cast(widget(index)); - removeTab(index); if(view) + { + removeTab(index); delete view; + } + else + { + // Placeholder tab + return; + } } void TraceManager::closeAllTabs() { - while(count()) + while(count() > 1) { - closeTab(0); + closeTab(count() - 1); } } diff --git a/src/gui/Src/Tracer/TraceWidget.cpp b/src/gui/Src/Tracer/TraceWidget.cpp index 1ef2674f..3a04fd98 100644 --- a/src/gui/Src/Tracer/TraceWidget.cpp +++ b/src/gui/Src/Tracer/TraceWidget.cpp @@ -102,6 +102,11 @@ void TraceWidget::traceSelectionChanged(unsigned long long selection) mGeneralRegs->setRegisters(®isters); } +void TraceWidget::openSlot(const QString & fileName) +{ + emit mTraceWidget->openSlot(fileName); +} + void TraceWidget::updateSlot() { auto fileOpened = mTraceWidget->isFileOpened(); diff --git a/src/gui/Src/Tracer/TraceWidget.h b/src/gui/Src/Tracer/TraceWidget.h index 948ea120..0676a360 100644 --- a/src/gui/Src/Tracer/TraceWidget.h +++ b/src/gui/Src/Tracer/TraceWidget.h @@ -28,6 +28,9 @@ public: TraceBrowser* getTraceBrowser(); +public slots: + void openSlot(const QString & fileName); + protected slots: void traceSelectionChanged(unsigned long long selection); void updateSlot();