// SPDX-FileCopyrightText: 2023 - 2025 UnionTech Software Technology Co., Ltd.//// SPDX-License-Identifier: GPL-3.0-or-later#include "debuggerplugin.h"#include "debuggerglobals.h"#include "debugmanager.h"#include "services/window/windowservice.h"#include "services/debugger/debuggerservice.h"#include "base/abstractaction.h"#include "base/abstractmenu.h"#include "base/abstractwidget.h"#include <QMenu>using namespace dpfservice;inline constexpr char mainWindow[] = "debugMainWindow";void DebuggerPlugin::initialize(){QString errStr;auto &ctx = dpfInstance.serviceContext();if (!ctx.load(dpfservice::DebuggerService::name(), &errStr)) {qCritical() << errStr;abort();}}bool DebuggerPlugin::start(){auto &ctx = dpfInstance.serviceContext();windowService = ctx.service<WindowService>(WindowService::name());if (!windowService) {qCritical() << "Failed, can't found window service";abort();}DebuggerService *debuggerService = ctx.service<DebuggerService>(DebuggerService::name());if (!debuggerService) {qCritical() << "Failed, can't found debugger service";abort();}debugManager->initialize(windowService, debuggerService);if (windowService->addNavigationItem) {QAction *action = new QAction(MWNA_DEBUG, this);action->setIcon(QIcon::fromTheme("debug-navigation"));auto *actionImpl = new AbstractAction(action);windowService->addNavigationItem(actionImpl, Priority::high);windowService->registerWidgetToMode(mainWindow, new AbstractWidget(debugManager->getDebugMainPane()), CM_DEBUG, Position::Left, true, true);windowService->bindWidgetToNavigation(mainWindow, actionImpl);windowService->setDockHeaderName(mainWindow, tr("debug"));auto localsPaneImpl = new AbstractWidget(debugManager->getLocalsPane());QString variablesPane = tr("Variables Watcher");windowService->addWidgetRightspace(variablesPane, localsPaneImpl, "");connect(action, &QAction::triggered, this, [=]() {if (debugManager->getRunState() != AbstractDebugger::kNoRun)windowService->showWidgetAtRightspace(variablesPane);}, Qt::DirectConnection);connect(debugManager, &DebugManager::debugStarted, this, [=](){uiController.doSwitch(MWNA_DEBUG);windowService->showWidgetAtRightspace(variablesPane);uiController.switchContext(tr("&Application Output"));}, Qt::DirectConnection);}return true;}dpf::Plugin::ShutdownFlag DebuggerPlugin::stop(){return Sync;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。