diff --git a/src/framework/event/event.cpp b/src/framework/event/event.cpp index 4f250ea2a..615db67a0 100644 --- a/src/framework/event/event.cpp +++ b/src/framework/event/event.cpp @@ -49,16 +49,6 @@ Event &Event::operator =(const Event &event) return *this; } -bool Event::operator==(const EventInterface &eventInterface) const -{ - return topic() == eventInterface.topic && data() == eventInterface.name; -} - -bool Event::operator==(const QString &interfaceName) const -{ - return data() == interfaceName; -} - /** * @brief Event::setTopic * 设置事件的主题 diff --git a/src/framework/event/event.h b/src/framework/event/event.h index 638a3731d..8012fbdce 100644 --- a/src/framework/event/event.h +++ b/src/framework/event/event.h @@ -15,7 +15,6 @@ DPF_BEGIN_NAMESPACE class EventPrivate; -struct EventInterface; /** * @brief The Event class @@ -32,6 +31,7 @@ class Event final explicit Event(const QString &topic); explicit Event(const Event& event); ~Event(); + Event &operator =(const Event &); void setTopic(const QString &topic); QString topic() const; @@ -41,10 +41,6 @@ class Event final void setProperty(const QString& key, const QVariant value); QVariant property(const QString &key) const; - - Event &operator =(const Event &); - bool operator==(const EventInterface &eventInterface) const; - bool operator==(const QString &interfaceName) const; }; QT_BEGIN_NAMESPACE @@ -56,28 +52,15 @@ QT_END_NAMESPACE struct EventInterface : std::function &)> { QString name; - QString topic; QVector pKeys; typedef QVariant Arg; typedef const QVariant cArg; typedef QVector Args; EventInterface() = delete; - EventInterface(const QString &name, const QString &topic, const QVector &keys, + EventInterface(const QString &name, const QVector &keys, const std::function&)> &func) - : std::function &)> (func), name(name), topic(topic), pKeys(keys) {} - - bool operator==(const EventInterface &eventInterface) const { - return topic == eventInterface.topic && name == eventInterface.name; - } - - bool operator==(const QVariant &interfaceName) const { - return name == interfaceName; - } - - bool operator==(const QString &interfaceName) const { - return name == interfaceName; - } + : std::function &)> (func), name(name), pKeys(keys) {} void operator()(const Args &as) const { return std::function &)>::operator()(as); @@ -213,7 +196,7 @@ struct EventInterface : std::function &)> */ #define OPI_ASKEEP(pKeys, pVals) if (pKeys.size() != pVals.size()) { qCritical() << "Key value pair length mismatch"; abort(); } #define OPI_OBJECT(t, logics) inline const struct { const char* topic{#t} ; logics }t; -#define OPI_INTERFACE(d, ...) const dpf::EventInterface d { #d, topic, {__VA_ARGS__} , [=](const QVector &args) -> void {\ +#define OPI_INTERFACE(d, ...) const dpf::EventInterface d { #d, {__VA_ARGS__} , [=](const QVector &args) -> void {\ OPI_ASKEEP(d.pKeys, args);\ dpf::Event event(topic); event.setData(#d);\ for ( int idx = 0; idx < d.pKeys.size(); idx ++) { event.setProperty(d.pKeys[idx], args[idx]); }\ diff --git a/src/plugins/actionanalyse/transceiver/actionanalysereceiver.cpp b/src/plugins/actionanalyse/transceiver/actionanalysereceiver.cpp index 355e18ce3..f1f5bec5b 100644 --- a/src/plugins/actionanalyse/transceiver/actionanalysereceiver.cpp +++ b/src/plugins/actionanalyse/transceiver/actionanalysereceiver.cpp @@ -28,7 +28,7 @@ QStringList ActionAnalyseReceiver::topics() void ActionAnalyseReceiver::eventProcess(const dpf::Event &event) { if (Configure::enabled()) { - if (event == actionanalyse.analyse) { // "workspace", "language", "storage" + if (event.data() == actionanalyse.analyse.name) { // "workspace", "language", "storage" QString workspaceKey = actionanalyse.analyseDone.pKeys[0]; // workspace QString languageKey = actionanalyse.analyseDone.pKeys[1]; // language QString storageKey = actionanalyse.analyseDone.pKeys[2]; // storage @@ -39,7 +39,7 @@ void ActionAnalyseReceiver::eventProcess(const dpf::Event &event) QVariant var = event.property(dataKey); AnalysedData analyData = var.value(); AnalyseKeeper::instance()->doAnalyse({workspace, language, storage}); - } else if (event == symbol.parseDone) { + } else if (event.data() == symbol.parseDone.name) { bool bSuccess = event.property("success").toBool(); if(bSuccess) { QString workspace = event.property("workspace").toString(); diff --git a/src/plugins/builder/transceiver/builderreceiver.cpp b/src/plugins/builder/transceiver/builderreceiver.cpp index aa6659f80..164b93870 100644 --- a/src/plugins/builder/transceiver/builderreceiver.cpp +++ b/src/plugins/builder/transceiver/builderreceiver.cpp @@ -25,19 +25,19 @@ QStringList BuilderReceiver::topics() void BuilderReceiver::eventProcess(const dpf::Event &event) { - if (event == project.activedProject) { + if (event.data() == project.activedProject.name) { QVariant proInfoVar = event.property(project.activedProject.pKeys[0]); dpfservice::ProjectInfo projectInfo = qvariant_cast(proInfoVar); BuildManager::instance()->setActivedProjectInfo(projectInfo.kitName(), projectInfo.workspaceFolder()); - } else if (event == project.createdProject) { + } else if (event.data() == project.createdProject.name) { QVariant proInfoVar = event.property(project.createdProject.pKeys[0]); dpfservice::ProjectInfo projectInfo = qvariant_cast(proInfoVar); BuildManager::instance()->setActivedProjectInfo(projectInfo.kitName(), projectInfo.workspaceFolder()); - } else if (event == project.deletedProject) { + } else if (event.data() == project.deletedProject.name) { QVariant proInfoVar = event.property(project.deletedProject.pKeys[0]); dpfservice::ProjectInfo projectInfo = qvariant_cast(proInfoVar); BuildManager::instance()->clearActivedProjectInfo(); - } else if (event == symbol.parseDone) { + } else if (event.data() == symbol.parseDone.name) { bool bSuccess = event.property("success").toBool(); if(!bSuccess) { QString workspace = event.property("workspace").toString(); diff --git a/src/plugins/commandproxy/transceiver/commandlinereceiver.cpp b/src/plugins/commandproxy/transceiver/commandlinereceiver.cpp index 964a4880a..880336da0 100644 --- a/src/plugins/commandproxy/transceiver/commandlinereceiver.cpp +++ b/src/plugins/commandproxy/transceiver/commandlinereceiver.cpp @@ -30,7 +30,7 @@ QStringList CommandLineReceiver::topics() void CommandLineReceiver::eventProcess(const dpf::Event &event) { - if (event == commandLine.build) { + if (event.data() == commandLine.build.name) { CommandExecuter::instance().buildProject(); } } diff --git a/src/plugins/core/transceiver/corereceiver.cpp b/src/plugins/core/transceiver/corereceiver.cpp index 95d93bba6..eac9364cd 100644 --- a/src/plugins/core/transceiver/corereceiver.cpp +++ b/src/plugins/core/transceiver/corereceiver.cpp @@ -27,18 +27,18 @@ QStringList CoreReceiver::topics() void CoreReceiver::eventProcess(const dpf::Event &event) { - if(event == uiController.doSwitch) { + if(event.data() == uiController.doSwitch.name) { QString actionTextKey = uiController.doSwitch.pKeys[0]; QString actionText = event.property(actionTextKey).toString(); QMetaObject::invokeMethod(this, [=](){ Controller::instance()->switchWidgetNavigation(actionText); } , Qt::QueuedConnection); - } else if(event == uiController.switchContext) { + } else if(event.data() == uiController.switchContext.name) { QString titleName = event.property(uiController.switchContext.pKeys[0]).toString(); QMetaObject::invokeMethod(this, [=](){ Controller::instance()->switchContextWidget(titleName); } , Qt::QueuedConnection); - } else if(event == uiController.switchWorkspace) { + } else if(event.data() == uiController.switchWorkspace.name) { QString titleName = event.property(uiController.switchWorkspace.pKeys[0]).toString(); Controller::instance()->switchWorkspace(titleName); } diff --git a/src/plugins/cxx/cmake/project/transceiver/projectcmakereceiver.cpp b/src/plugins/cxx/cmake/project/transceiver/projectcmakereceiver.cpp index c517bde39..cb5f05a81 100644 --- a/src/plugins/cxx/cmake/project/transceiver/projectcmakereceiver.cpp +++ b/src/plugins/cxx/cmake/project/transceiver/projectcmakereceiver.cpp @@ -35,13 +35,13 @@ void ProjectCmakeReceiver::eventProcess(const dpf::Event &event) builderEvent(event); } - if (event == project.activedProject) { + if (event.data() == project.activedProject.name) { QVariant proInfoVar = event.property(project.activedProject.pKeys[0]); dpfservice::ProjectInfo projectInfo = qvariant_cast(proInfoVar); TargetsManager::instance()->readTargets(projectInfo.buildFolder(), projectInfo.workspaceFolder()); } - if (event == project.fileDeleted) { + if (event.data() == project.fileDeleted.name) { QVariant varKit = event.property("kit"); QString kit = varKit.toString(); diff --git a/src/plugins/debugger/dap/dapdebugger.cpp b/src/plugins/debugger/dap/dapdebugger.cpp index 33e415817..297d7868f 100644 --- a/src/plugins/debugger/dap/dapdebugger.cpp +++ b/src/plugins/debugger/dap/dapdebugger.cpp @@ -545,8 +545,9 @@ void DAPDebugger::registerDapHandlers() void DAPDebugger::handleEvents(const dpf::Event &event) { QString topic = event.topic(); + QString data = event.data().toString(); if (topic == T_BUILDER) { - if (event == D_BUILD_STATE) { + if (data == D_BUILD_STATE) { int state = event.property(P_STATE).toInt(); BuildCommandInfo commandInfo = qvariant_cast(event.property(P_ORIGINCMD)); if (commandInfo.uuid == d->currentBuildUuid) { @@ -557,7 +558,7 @@ void DAPDebugger::handleEvents(const dpf::Event &event) } } - if (event == debugger.prepareDebugDone) { + if (event.data() == debugger.prepareDebugDone.name) { bool succeed = event.property(debugger.prepareDebugDone.pKeys[0]).toBool(); QString errorMsg = event.property(debugger.prepareDebugDone.pKeys[1]).toString(); if (!succeed) { @@ -574,25 +575,25 @@ void DAPDebugger::handleEvents(const dpf::Event &event) } } } - } else if (event == debugger.prepareDebugProgress) { + } else if (event.data() == debugger.prepareDebugProgress.name) { printOutput(event.property(debugger.prepareDebugProgress.pKeys[0]).toString()); - } else if (event == project.activedProject) { + } else if (event.data() == project.activedProject.name) { getActiveProjectInfo() = qvariant_cast(event.property(project.activedProject.pKeys[0])); d->activeProjectKitName = getActiveProjectInfo().kitName(); updateRunState(kNoRun); - } else if (event == project.createdProject) { + } else if (event.data() == project.createdProject.name) { getActiveProjectInfo() = qvariant_cast(event.property(project.createdProject.pKeys[0])); d->activeProjectKitName = getActiveProjectInfo().kitName(); updateRunState(kNoRun); } else if (event.data() == project.deletedProject.name) { d->activeProjectKitName.clear(); updateRunState(kNoRun); - } else if (event == editor.switchedFile) { + } else if (event.data() == editor.switchedFile.name) { QString filePath = event.property(editor.switchedFile.pKeys[0]).toString(); if (d->currentOpenedFileName != filePath) { d->currentOpenedFileName = filePath; } - } else if (event == editor.fileOpened) { + } else if (event.data() == editor.fileOpened.name) { QString filePath = event.property(editor.switchedFile.pKeys[0]).toString(); d->currentOpenedFileName = filePath; if (d->bps.count(filePath)) { @@ -601,17 +602,17 @@ void DAPDebugger::handleEvents(const dpf::Event &event) editor.addBreakpoint(filePath, line); } } - } else if (event == editor.fileClosed) { + } else if (event.data() == editor.fileClosed.name) { QString filePath = event.property(editor.switchedFile.pKeys[0]).toString(); if (d->currentOpenedFileName == filePath) { d->currentOpenedFileName.clear(); } - } else if (event == editor.breakpointAdded) { + } else if (event.data() == editor.breakpointAdded.name) { QString filePath = event.property(editor.breakpointAdded.pKeys[0]).toString(); int line = event.property(editor.breakpointAdded.pKeys[1]).toInt(); d->bps.insert(filePath, line); addBreakpoint(filePath, line); - } else if (event == editor.breakpointRemoved) { + } else if (event.data() == editor.breakpointRemoved.name) { QString filePath = event.property(editor.breakpointRemoved.pKeys[0]).toString(); int line = event.property(editor.breakpointRemoved.pKeys[1]).toInt(); d->bps.remove(filePath, line); diff --git a/src/plugins/debugger/debugmanager.cpp b/src/plugins/debugger/debugmanager.cpp index 4da4bbdbb..270dba88c 100644 --- a/src/plugins/debugger/debugmanager.cpp +++ b/src/plugins/debugger/debugmanager.cpp @@ -7,11 +7,11 @@ #include "debuggersignals.h" #include "debuggerglobals.h" #include "interface/menumanager.h" + #include "services/debugger/debuggerservice.h" #include "services/language/languageservice.h" #include "common/util/custompaths.h" #include "common/project/projectinfo.h" -#include "remotedebug/remotedebugdlg.h" using namespace DEBUG_NAMESPACE; using namespace dpfservice; @@ -152,15 +152,6 @@ void DebugManager::stepOut() AsynInvoke(currentDebugger->stepOut()); } -void DebugManager::remoteDebug() -{ - RemoteDebugDlg dlg; - if (dlg.exec() == DDialog::Accepted) { - auto paramters = dlg.getRemoteParameters(); - // invoke debug interface. - } -} - void DebugManager::handleRunStateChanged(AbstractDebugger::RunState state) { menuManager->handleRunStateChanged(state); @@ -174,21 +165,23 @@ void DebugManager::handleRunStateChanged(AbstractDebugger::RunState state) void DebugManager::handleEvents(const dpf::Event &event) { - if (event == debugger.prepareDebugProgress) { + QString topic = event.topic(); + QString data = event.data().toString(); + if (event.data() == debugger.prepareDebugProgress.name) { // TODO(logan) - } else if (event == project.activedProject) { + } else if (event.data() == project.activedProject.name) { auto projectInfo = qvariant_cast(event.property(project.activedProject.pKeys[0])); activeProjectKitName = projectInfo.kitName(); - } else if (event == project.createdProject) { + } else if (event.data() == project.createdProject.name) { auto projectInfo = qvariant_cast(event.property(project.createdProject.pKeys[0])); activeProjectKitName = projectInfo.kitName(); - } else if (event == project.deletedProject) { + } else if (event.data() == project.deletedProject.name) { activeProjectKitName.clear(); - } else if (event == editor.switchedFile) { + } else if (event.data() == editor.switchedFile.name) { // TODO(logan) - } else if (event == editor.fileOpened) { + } else if (event.data() == editor.fileOpened.name) { // TODO(logan) - } else if (event == editor.fileClosed) { + } else if (event.data() == editor.fileClosed.name) { // TODO(logan) } } diff --git a/src/plugins/debugger/debugmanager.h b/src/plugins/debugger/debugmanager.h index b2ecb2676..a4e98d9f2 100644 --- a/src/plugins/debugger/debugmanager.h +++ b/src/plugins/debugger/debugmanager.h @@ -61,8 +61,6 @@ public slots: void stepIn(); void stepOut(); - void remoteDebug(); - void handleRunStateChanged(AbstractDebugger::RunState state); void handleEvents(const dpf::Event &event); diff --git a/src/plugins/debugger/interface/appoutputpane.h b/src/plugins/debugger/interface/appoutputpane.h index a41f03a16..b9688b14f 100644 --- a/src/plugins/debugger/interface/appoutputpane.h +++ b/src/plugins/debugger/interface/appoutputpane.h @@ -10,6 +10,7 @@ #include +class OutputWindowPrivate; class AppOutputPane : public OutputPane { Q_OBJECT diff --git a/src/plugins/debugger/interface/menumanager.cpp b/src/plugins/debugger/interface/menumanager.cpp index 524e9391d..0a10aef34 100644 --- a/src/plugins/debugger/interface/menumanager.cpp +++ b/src/plugins/debugger/interface/menumanager.cpp @@ -107,13 +107,6 @@ void MenuManager::initialize(WindowService *windowService) "debugger_stepout"); windowService->addAction(MWM_DEBUG, actionImpl); windowService->addTopToolItem(actionImpl, MWTG_DEBUG, false); - - remoteDebug.reset(new QAction(MWMDA_REMOTE_DEBUG)); - connect(remoteDebug.get(), &QAction::triggered, debugManager, &DebugManager::remoteDebug); - actionImpl = initAction(remoteDebug.get(), "Debug.RemoteDebug", - tr("Remote Debug"), {}, - ""); - windowService->addAction(MWM_DEBUG, actionImpl); } void MenuManager::handleRunStateChanged(AbstractDebugger::RunState state) diff --git a/src/plugins/debugger/interface/menumanager.h b/src/plugins/debugger/interface/menumanager.h index 34f908294..2fffc3213 100644 --- a/src/plugins/debugger/interface/menumanager.h +++ b/src/plugins/debugger/interface/menumanager.h @@ -39,7 +39,6 @@ public slots: QSharedPointer stepOver; QSharedPointer stepIn; QSharedPointer stepOut; - QSharedPointer remoteDebug; }; #endif // MENUMANAGER_H diff --git a/src/plugins/debugger/remotedebug/remotedebugdlg.cpp b/src/plugins/debugger/remotedebug/remotedebugdlg.cpp index 5f07ec126..68839fd0f 100644 --- a/src/plugins/debugger/remotedebug/remotedebugdlg.cpp +++ b/src/plugins/debugger/remotedebug/remotedebugdlg.cpp @@ -14,31 +14,14 @@ #include DWIDGET_USE_NAMESPACE - -class RemoteDebugDlgPrivate -{ - friend RemoteDebugDlg; - -public: - DLineEdit *leIP{nullptr}; - DLineEdit *lePort{nullptr}; - DLineEdit *leDebugee{nullptr}; - DLineEdit *leArguments{nullptr}; -}; - -RemoteDebugDlg::RemoteDebugDlg(QWidget *parent) - : DDialog(parent) - , d(new RemoteDebugDlgPrivate()) +RemoteDebugDlg::RemoteDebugDlg(QWidget *parent) : + DDialog(parent) { setupUi(); } RemoteDebugDlg::~RemoteDebugDlg() { - if (d) { - delete d; - d = nullptr; - } } void RemoteDebugDlg::on_pbtnOK_clicked() @@ -51,56 +34,45 @@ void RemoteDebugDlg::on_pbtnCancel_clicked() reject(); } -RemoteParamters RemoteDebugDlg::getRemoteParameters() const -{ - RemoteParamters ret; - ret.ip = d->leIP->text(); - ret.port = d->lePort->text(); - ret.debugee = d->leDebugee->text(); - ret.arguments = d->leArguments->text(); - - return ret; -} - void RemoteDebugDlg::setupUi() { setWindowTitle(tr("Remote Debug")); - auto verticalLayout = static_cast(this->layout()); + resize(400, 196); + auto verticalLayout = new QVBoxLayout(this); verticalLayout->setSpacing(6); verticalLayout->setContentsMargins(11, 11, 11, 11); - - auto gridLayout = new QGridLayout(this); + auto gridLayout = new QGridLayout(); gridLayout->setSpacing(6); auto lbDebuggee = new DLabel(this); lbDebuggee->setText(tr("Debuggee:")); gridLayout->addWidget(lbDebuggee, 3, 0, 1, 1); - d->lePort = new DLineEdit(this); + auto lePort = new DLineEdit(this); - gridLayout->addWidget(d->lePort, 2, 1, 1, 1); + gridLayout->addWidget(lePort, 2, 1, 1, 1); - d->leIP = new DLineEdit(this); + auto leIP = new DLineEdit(this); - gridLayout->addWidget(d->leIP, 1, 1, 1, 1); + gridLayout->addWidget(leIP, 1, 1, 1, 1); auto lbPort = new DLabel(this); lbPort->setText(tr("Port:")); gridLayout->addWidget(lbPort, 2, 0, 1, 1); - d->leDebugee = new DLineEdit(this); + auto leDebugee = new DLineEdit(this); - gridLayout->addWidget(d->leDebugee, 3, 1, 1, 1); + gridLayout->addWidget(leDebugee, 3, 1, 1, 1); auto lbIP = new DLabel(this); lbIP->setText(tr("IP:")); gridLayout->addWidget(lbIP, 1, 0, 1, 1); - d->leArguments = new DLineEdit(this); + auto leParameters = new DLineEdit(this); - gridLayout->addWidget(d->leArguments, 4, 1, 1, 1); + gridLayout->addWidget(leParameters, 4, 1, 1, 1); auto lbParameters = new DLabel(this); lbParameters->setText(tr("Parameters:")); @@ -109,7 +81,7 @@ void RemoteDebugDlg::setupUi() verticalLayout->addLayout(gridLayout); - auto horizontalLayout = new QHBoxLayout(this); + auto horizontalLayout = new QHBoxLayout(); horizontalLayout->setSpacing(6); auto horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); diff --git a/src/plugins/debugger/remotedebug/remotedebugdlg.h b/src/plugins/debugger/remotedebug/remotedebugdlg.h index 2bbd5c969..346b10151 100644 --- a/src/plugins/debugger/remotedebug/remotedebugdlg.h +++ b/src/plugins/debugger/remotedebug/remotedebugdlg.h @@ -6,15 +6,6 @@ #include -struct RemoteParamters -{ - QString ip; - QString port; - QString debugee; - QString arguments; -}; - -class RemoteDebugDlgPrivate; class RemoteDebugDlg : public DTK_WIDGET_NAMESPACE::DDialog { Q_OBJECT @@ -23,8 +14,6 @@ class RemoteDebugDlg : public DTK_WIDGET_NAMESPACE::DDialog explicit RemoteDebugDlg(QWidget *parent = nullptr); ~RemoteDebugDlg(); - RemoteParamters getRemoteParameters() const; - private slots: void on_pbtnOK_clicked(); @@ -32,8 +21,6 @@ private slots: private: void setupUi(); - - RemoteDebugDlgPrivate *d{nullptr}; }; #endif // REMOTEDEBUGDLG_H diff --git a/src/plugins/debugger/runner/runner.cpp b/src/plugins/debugger/runner/runner.cpp index 4aa1f4479..0a9cab26e 100644 --- a/src/plugins/debugger/runner/runner.cpp +++ b/src/plugins/debugger/runner/runner.cpp @@ -66,8 +66,9 @@ void Runner::run() void Runner::handleEvents(const dpf::Event &event) { QString topic = event.topic(); + QString data = event.data().toString(); if (topic == T_BUILDER) { - if (event == D_BUILD_STATE) { + if (data == D_BUILD_STATE) { int state = event.property(P_STATE).toInt(); BuildCommandInfo commandInfo = qvariant_cast(event.property(P_ORIGINCMD)); if (commandInfo.uuid == d->currentBuildUuid) { @@ -77,15 +78,15 @@ void Runner::handleEvents(const dpf::Event &event) } } } - } else if (event == editor.switchedFile) { + } else if (event.data() == editor.switchedFile.name) { QString filePath = event.property(editor.switchedFile.pKeys[0]).toString(); if (d->currentOpenedFilePath != filePath) { d->currentOpenedFilePath = filePath; } - } else if (event == editor.fileOpened) { + } else if (event.data() == editor.fileOpened.name) { QString filePath = event.property(editor.switchedFile.pKeys[0]).toString(); d->currentOpenedFilePath = filePath; - } else if (event == editor.fileClosed) { + } else if (event.data() == editor.fileClosed.name) { QString filePath = event.property(editor.switchedFile.pKeys[0]).toString(); if (d->currentOpenedFilePath == filePath) { d->currentOpenedFilePath.clear(); diff --git a/src/services/window/windowelement.h b/src/services/window/windowelement.h index 461232645..00679c66d 100644 --- a/src/services/window/windowelement.h +++ b/src/services/window/windowelement.h @@ -61,7 +61,6 @@ inline const QString MWMDA_RESTART_DEBUGGING { QAction::tr("Restart Debugging") inline const QString MWMDA_STEP_OVER { QAction::tr("Step Over") }; inline const QString MWMDA_STEP_IN { QAction::tr("Step In") }; inline const QString MWMDA_STEP_OUT { QAction::tr("Step Out") }; -inline const QString MWMDA_REMOTE_DEBUG { QAction::tr("Remote Debug") }; // MWMTA = MWM Tool Action inline const QString MWM_TOOLS { QMenu::tr("&Tools") };