1
0
Fork 0

GUI: implemented add/show/close QWidget tabs

This commit is contained in:
Mr. eXoDia 2015-07-07 17:21:10 +02:00
parent d5a437439e
commit 58731fe49e
4 changed files with 89 additions and 44 deletions

View File

@ -410,6 +410,21 @@ void Bridge::emitShowCpu()
emit showCpu();
}
void Bridge::emitAddQWidgetTab(QWidget* qWidget)
{
emit addQWidgetTab(qWidget);
}
void Bridge::emitShowQWidgetTab(QWidget* qWidget)
{
emit showQWidgetTab(qWidget);
}
void Bridge::emitCloseQWidgetTab(QWidget* qWidget)
{
emit closeQWidgetTab(qWidget);
}
/************************************************************************************
Static Functions
************************************************************************************/
@ -824,6 +839,24 @@ __declspec(dllexport) void* _gui_sendmessage(GUIMSG type, void* param1, void* pa
}
break;
case GUI_ADD_QWIDGET_TAB:
{
Bridge::getBridge()->emitAddQWidgetTab((QWidget*)param1);
}
break;
case GUI_SHOW_QWIDGET_TAB:
{
Bridge::getBridge()->emitShowQWidgetTab((QWidget*)param1);
}
break;
case GUI_CLOSE_QWIDGET_TAB:
{
Bridge::getBridge()->emitCloseQWidgetTab((QWidget*)param1);
}
break;
default:
{

View File

@ -3,6 +3,7 @@
#include <agents.h>
#include <QObject>
#include <QWidget>
#include <QMutex>
#include "Imports.h"
#include "NewTypes.h"
@ -87,6 +88,9 @@ public:
void emitSetMenuEntryIcon(int hEntry, const ICONDATA* icon);
void emitSetMenuIcon(int hMenu, const ICONDATA* icon);
void emitShowCpu();
void emitAddQWidgetTab(QWidget* qWidget);
void emitShowQWidgetTab(QWidget* qWidget);
void emitCloseQWidgetTab(QWidget* qWidget);
//Public variables
void* winId;
@ -156,6 +160,9 @@ signals:
void setIconMenuEntry(int hEntry, QIcon icon);
void setIconMenu(int hMenu, QIcon icon);
void showCpu();
void addQWidgetTab(QWidget* qWidget);
void showQWidgetTab(QWidget* qWidget);
void closeQWidgetTab(QWidget* qWidget);
private:
QMutex* mBridgeMutex;

View File

@ -31,6 +31,8 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
connect(Bridge::getBridge(), SIGNAL(setIconMenu(int, QIcon)), this, SLOT(setIconMenu(int, QIcon)));
connect(Bridge::getBridge(), SIGNAL(setIconMenuEntry(int, QIcon)), this, SLOT(setIconMenuEntry(int, QIcon)));
connect(Bridge::getBridge(), SIGNAL(showCpu()), this, SLOT(displayCpuWidget()));
connect(Bridge::getBridge(), SIGNAL(addQWidgetTab(QWidget*)), this, SLOT(addQWidgetTab(QWidget*)));
connect(Bridge::getBridge(), SIGNAL(showQWidgetTab(QWidget*)), this, SLOT(showQWidgetTab(QWidget*)));
//setup menu api
initMenuApi();
@ -130,17 +132,17 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
mTabWidget = new MHTabWidget(NULL);
//Setup tabs
mTabWidget->addTab(mCpuWidget, mCpuWidget->windowIcon(), mCpuWidget->windowTitle());
mTabWidget->addTab(mLogView, mLogView->windowIcon(), mLogView->windowTitle());
mTabWidget->addTab(mBreakpointsView, mBreakpointsView->windowIcon(), mBreakpointsView->windowTitle());
mTabWidget->addTab(mMemMapView, mMemMapView->windowIcon(), mMemMapView->windowTitle());
mTabWidget->addTab(mCallStackView, mCallStackView->windowIcon(), mCallStackView->windowTitle());
mTabWidget->addTab(mScriptView, mScriptView->windowIcon(), mScriptView->windowTitle());
mTabWidget->addTab(mSymbolView, mSymbolView->windowIcon(), mSymbolView->windowTitle());
mTabWidget->addTab(mSourceViewManager, mSourceViewManager->windowIcon(), mSourceViewManager->windowTitle());
mTabWidget->addTab(mReferenceManager, mReferenceManager->windowIcon(), mReferenceManager->windowTitle());
mTabWidget->addTab(mThreadView, mThreadView->windowIcon(), mThreadView->windowTitle());
mTabWidget->addTab(mSnowmanView, mSnowmanView->windowIcon(), mSnowmanView->windowTitle());
addQWidgetTab(mCpuWidget);
addQWidgetTab(mLogView);
addQWidgetTab(mBreakpointsView);
addQWidgetTab(mMemMapView);
addQWidgetTab(mCallStackView);
addQWidgetTab(mScriptView);
addQWidgetTab(mSymbolView);
addQWidgetTab(mSourceViewManager);
addQWidgetTab(mReferenceManager);
addQWidgetTab(mThreadView);
addQWidgetTab(mSnowmanView);
setCentralWidget(mTabWidget);
@ -488,23 +490,17 @@ void MainWindow::execRtr()
void MainWindow::displayMemMapWidget()
{
mMemMapView->show();
mMemMapView->setFocus();
setTab(mMemMapView);
showQWidgetTab(mMemMapView);
}
void MainWindow::displayLogWidget()
{
mLogView->show();
mLogView->setFocus();
setTab(mLogView);
showQWidgetTab(mLogView);
}
void MainWindow::displayScriptWidget()
{
mScriptView->show();
mScriptView->setFocus();
setTab(mScriptView);
showQWidgetTab(mScriptView);
}
void MainWindow::displayAboutWidget()
@ -607,9 +603,7 @@ void MainWindow::restartDebugging()
void MainWindow::displayBreakpointWidget()
{
mBreakpointsView->show();
mBreakpointsView->setFocus();
setTab(mBreakpointsView);
showQWidgetTab(mBreakpointsView);
}
void MainWindow::dragEnterEvent(QDragEnterEvent* pEvent)
@ -667,44 +661,32 @@ void MainWindow::execSkip()
void MainWindow::displayCpuWidget()
{
mCpuWidget->show();
mCpuWidget->setFocus();
setTab(mCpuWidget);
showQWidgetTab(mCpuWidget);
}
void MainWindow::displaySymbolWidget()
{
mSymbolView->show();
mSymbolView->setFocus();
setTab(mSymbolView);
showQWidgetTab(mSymbolView);
}
void MainWindow::displaySourceViewWidget()
{
mSourceViewManager->show();
mSourceViewManager->setFocus();
setTab(mSourceViewManager);
showQWidgetTab(mSourceViewManager);
}
void MainWindow::displayReferencesWidget()
{
mReferenceManager->show();
mReferenceManager->setFocus();
setTab(mReferenceManager);
showQWidgetTab(mReferenceManager);
}
void MainWindow::displayThreadsWidget()
{
mThreadView->show();
mThreadView->setFocus();
setTab(mThreadView);
showQWidgetTab(mThreadView);
}
void MainWindow::displaySnowmanWidget()
{
mSnowmanView->show();
mSnowmanView->setFocus();
setTab(mSnowmanView);
showQWidgetTab(mSnowmanView);
}
void MainWindow::openSettings()
@ -1025,9 +1007,7 @@ void MainWindow::checkUpdates()
void MainWindow::displayCallstack()
{
mCallStackView->show();
mCallStackView->setFocus();
setTab(mCallStackView);
showQWidgetTab(mCallStackView);
}
void MainWindow::donate()
@ -1122,3 +1102,25 @@ void MainWindow::canClose()
bCanClose = true;
close();
}
void MainWindow::addQWidgetTab(QWidget* qWidget)
{
mTabWidget->addTab(qWidget, qWidget->windowIcon(), qWidget->windowTitle());
}
void MainWindow::showQWidgetTab(QWidget* qWidget)
{
qWidget->show();
qWidget->setFocus();
setTab(qWidget);
}
void MainWindow::closeQWidgetTab(QWidget* qWidget)
{
for(int i = 0; i < mTabWidget->count(); i++)
if(mTabWidget->widget(i) == qWidget)
{
mTabWidget->DeleteTab(i);
break;
}
}

View File

@ -104,6 +104,9 @@ public slots:
void changeCommandLine();
void decompileAt(int_t start, int_t end);
void canClose();
void addQWidgetTab(QWidget* qWidget);
void showQWidgetTab(QWidget* qWidget);
void closeQWidgetTab(QWidget* qWidget);
private:
Ui::MainWindow* ui;