| 846 | } |
| 847 | |
| 848 | void DAPDebugger::handleEvents(const dpf::Event &event) |
| 849 | { |
| 850 | QString topic = event.topic(); |
| 851 | QString data = event.data().toString(); |
| 852 | if (topic == T_BUILDER) { |
| 853 | if (data == D_BUILD_STATE) { |
| 854 | int state = event.property(P_STATE).toInt(); |
| 855 | BuildCommandInfo commandInfo = qvariant_cast<BuildCommandInfo>(event.property(P_ORIGINCMD)); |
| 856 | if (commandInfo.uuid == d->currentBuildUuid) { |
| 857 | int buildSuccess = 0; |
| 858 | if (state == buildSuccess && d->runState == kPreparing) |
| 859 | start(); |
| 860 | } |
| 861 | } |
| 862 | } |
| 863 | |
| 864 | if (event.data() == debugger.prepareDebugDone.name) { |
| 865 | bool succeed = event.property(debugger.prepareDebugDone.pKeys[0]).toBool(); |
| 866 | QString errorMsg = event.property(debugger.prepareDebugDone.pKeys[1]).toString(); |
| 867 | if (!succeed) { |
| 868 | printOutput(errorMsg, OutputPane::ErrorMessage); |
| 869 | updateRunState(kPreparing); |
| 870 | } else { |
| 871 | auto &ctx = dpfInstance.serviceContext(); |
| 872 | LanguageService *service = ctx.service<LanguageService>(LanguageService::name()); |
| 873 | if (service) { |
| 874 | auto generator = service->create<LanguageGenerator>(d->activeProjectKitName); |
| 875 | if (generator) { |
| 876 | QMap<QString, QVariant> param = generator->getDebugArguments(getActiveProjectInfo(), d->currentOpenedFileName); |
| 877 | requestDebugPort(param, d->activeProjectKitName, false); |
| 878 | } |
| 879 | } |
| 880 | } |
| 881 | } else if (event.data() == debugger.prepareDebugProgress.name) { |
| 882 | printOutput(event.property(debugger.prepareDebugProgress.pKeys[0]).toString()); |
| 883 | } else if (event.data() == project.activatedProject.name) { |
| 884 | d->projectInfo = qvariant_cast<ProjectInfo>(event.property("projectInfo")); |
| 885 | d->activeProjectKitName = d->projectInfo.kitName(); |
| 886 | } else if (event.data() == project.deletedProject.name) { |
| 887 | auto prjInfo = event.property("projectInfo").value<dpfservice::ProjectInfo>(); |
| 888 | if (d->projectInfo.isSame(prjInfo)) { |
| 889 | abortDebug(); |
| 890 | d->activeProjectKitName.clear(); |
| 891 | } |
| 892 | } else if (event.data() == editor.switchedFile.name) { |
| 893 | QString filePath = event.property(editor.switchedFile.pKeys[0]).toString(); |
| 894 | if (d->currentOpenedFileName != filePath) { |
| 895 | d->currentOpenedFileName = filePath; |
| 896 | } |
| 897 | } else if (event.data() == editor.fileOpened.name) { |
| 898 | QString filePath = event.property(editor.switchedFile.pKeys[0]).toString(); |
| 899 | d->currentOpenedFileName = filePath; |
| 900 | if (d->breakpointModel.breakpointSize() > 0) { |
| 901 | for (auto index = 0; index < d->breakpointModel.breakpointSize(); index++) { |
| 902 | auto bp = d->breakpointModel.BreakpointAt(index); |
| 903 | if (bp.filePath == filePath) |
| 904 | editor.addBreakpoint(filePath, bp.lineNumber - 1, bp.enabled); |
| 905 | } |
nothing calls this directly
no test coverage detected