From d57c5a29af3d849de114960d1487d7c9fcfe798d Mon Sep 17 00:00:00 2001 From: IKhonakhbeeva Date: Tue, 30 Aug 2022 18:32:58 +0300 Subject: [PATCH 1/3] Add after upload for trik (python) --- .../trikGeneratorPluginBase.h | 6 +++ .../trikPythonGeneratorPluginBase.h | 5 +++ .../src/trikPythonGeneratorPluginBase.cpp | 43 ++++++++++++++++++- .../src/ui/robotsSettingsPage.cpp | 4 ++ .../trikDefaultSettings.ini | 1 + .../robotCommunication/runProgramProtocol.h | 3 ++ .../robotCommunication/runProgramProtocol.cpp | 17 ++++++++ 7 files changed, 77 insertions(+), 2 deletions(-) diff --git a/plugins/robots/generators/trik/trikGeneratorBase/include/trikGeneratorBase/trikGeneratorPluginBase.h b/plugins/robots/generators/trik/trikGeneratorBase/include/trikGeneratorBase/trikGeneratorPluginBase.h index 5f9abb8a73..4eed02a9ff 100644 --- a/plugins/robots/generators/trik/trikGeneratorBase/include/trikGeneratorBase/trikGeneratorPluginBase.h +++ b/plugins/robots/generators/trik/trikGeneratorBase/include/trikGeneratorBase/trikGeneratorPluginBase.h @@ -32,6 +32,12 @@ class ROBOTS_TRIK_GENERATOR_BASE_EXPORT TrikGeneratorPluginBase : public generat Q_OBJECT public: + enum class RunPolicy { + Ask + , AlwaysRun + , NeverRun + }; + TrikGeneratorPluginBase(kitBase::robotModel::RobotModelInterface * const robotModel , const QSharedPointer &blocksFactory ); diff --git a/plugins/robots/generators/trik/trikPythonGeneratorLibrary/include/trikPythonGeneratorLibrary/trikPythonGeneratorPluginBase.h b/plugins/robots/generators/trik/trikPythonGeneratorLibrary/include/trikPythonGeneratorLibrary/trikPythonGeneratorPluginBase.h index 093e229bc6..ca3751d1af 100644 --- a/plugins/robots/generators/trik/trikPythonGeneratorLibrary/include/trikPythonGeneratorLibrary/trikPythonGeneratorPluginBase.h +++ b/plugins/robots/generators/trik/trikPythonGeneratorLibrary/include/trikPythonGeneratorLibrary/trikPythonGeneratorPluginBase.h @@ -84,6 +84,9 @@ private slots: /// Reenables buttons when program uploading or robot stopping is complete (sucessfully or with error). void onProtocolFinished(); + /// Runs after upload if needed + void onUploadSuccess(); + private: /// Disables "run", "upload" and "stop" buttons when there is pending command to a robot. void disableButtons(); @@ -116,6 +119,8 @@ private slots: /// Protocol that is used to stop robot. QScopedPointer mStopRobotProtocol; + + QFileInfo mMainFile; }; } diff --git a/plugins/robots/generators/trik/trikPythonGeneratorLibrary/src/trikPythonGeneratorPluginBase.cpp b/plugins/robots/generators/trik/trikPythonGeneratorLibrary/src/trikPythonGeneratorPluginBase.cpp index ab10f054ee..5e677faaac 100644 --- a/plugins/robots/generators/trik/trikPythonGeneratorLibrary/src/trikPythonGeneratorPluginBase.cpp +++ b/plugins/robots/generators/trik/trikPythonGeneratorLibrary/src/trikPythonGeneratorPluginBase.cpp @@ -30,7 +30,8 @@ #include #include #include -#include +#include +#include #include "trikPythonMasterGenerator.h" #include "emptyShell.h" @@ -86,7 +87,7 @@ void TrikPythonGeneratorPluginBase::init(const kitBase::KitPluginConfigurator &c , this, &TrikPythonGeneratorPluginBase::onProtocolFinished); connect(mUploadProgramProtocol.data(), &UploadProgramProtocol::success - , this, &TrikPythonGeneratorPluginBase::onProtocolFinished); + , this, &TrikPythonGeneratorPluginBase::onUploadSuccess); connect(mRunProgramProtocol.data(), &RunProgramProtocol::success , this, &TrikPythonGeneratorPluginBase::onProtocolFinished); connect(mStopRobotProtocol.data(), &StopRobotProtocol::success @@ -200,6 +201,7 @@ void TrikPythonGeneratorPluginBase::uploadProgram() const QFileInfo fileInfo = generateCodeForProcessing(); if (fileInfo != QFileInfo() && !fileInfo.absoluteFilePath().isEmpty()) { disableButtons(); + mMainFile = fileInfo; mUploadProgramProtocol->run({fileInfo}); } } else { @@ -215,6 +217,9 @@ void TrikPythonGeneratorPluginBase::uploadProgram() } if (!files.isEmpty()) { disableButtons(); + if (auto code = dynamic_cast(mMainWindowInterface->currentTab())) { + mMainFile = QFileInfo(mTextManager->path(code)); + } mUploadProgramProtocol->run(files); } else { mMainWindowInterface->errorReporter()->addError( @@ -257,11 +262,45 @@ void TrikPythonGeneratorPluginBase::stopRobot() void TrikPythonGeneratorPluginBase::onProtocolFinished() { + mMainFile = QFileInfo(); mUploadProgramAction->setEnabled(true); mRunProgramAction->setEnabled(true); mStopRobotAction->setEnabled(true); } +void TrikPythonGeneratorPluginBase::onUploadSuccess() +{ + auto runPolicy = static_cast(SettingsManager::value("trikRunPolicy").toInt()); + QFileInfo fileInfo; + switch (runPolicy) { + case RunPolicy::Ask: + if (utils::QRealMessageBox::question(mMainWindowInterface->windowWidget() + , tr("The program has been uploaded") + , tr("Do you want to run it?") + ) != QMessageBox::Yes) { + break; + } + Q_FALLTHROUGH(); + case RunPolicy::AlwaysRun: + if (mMainFile != QFileInfo()) { + if (mRunProgramProtocol) { + mRunProgramProtocol->runUploaded(mMainFile); + return; + } else { + QLOG_ERROR() << "Run program protocol is not initialized"; + } + } else { + utils::QRealMessageBox::question(mMainWindowInterface->windowWidget() + ,tr("Error"), tr("Unknown file to run after upload, please run manually"), + QMessageBox::Ok); + } + break; + case RunPolicy::NeverRun: + break; + } + onProtocolFinished(); +} + void TrikPythonGeneratorPluginBase::disableButtons() { mUploadProgramAction->setEnabled(false); diff --git a/plugins/robots/interpreters/interpreterCore/src/ui/robotsSettingsPage.cpp b/plugins/robots/interpreters/interpreterCore/src/ui/robotsSettingsPage.cpp index 37e07c9d17..f1eb2d0936 100644 --- a/plugins/robots/interpreters/interpreterCore/src/ui/robotsSettingsPage.cpp +++ b/plugins/robots/interpreters/interpreterCore/src/ui/robotsSettingsPage.cpp @@ -126,6 +126,8 @@ void RobotsSettingsPage::save() SettingsManager::setValue("nxtFlashToolRunPolicy", mUi->runningAfterUploadingComboBox->currentIndex()); } else if (mRobotModelManager.model().kitId().contains("ev3", Qt::CaseInsensitive)) { SettingsManager::setValue("ev3RunPolicy", mUi->runningAfterUploadingComboBox->currentIndex()); + } else if (mRobotModelManager.model().kitId().contains("trik", Qt::CaseInsensitive)) { + SettingsManager::setValue("trikRunPolicy", mUi->runningAfterUploadingComboBox->currentIndex()); } mUi->devicesConfigurer->save(); @@ -169,6 +171,8 @@ void RobotsSettingsPage::restoreSettings() mUi->runningAfterUploadingComboBox->setCurrentIndex(SettingsManager::value("nxtFlashToolRunPolicy").toInt()); } else if (mRobotModelManager.model().kitId().contains("ev3", Qt::CaseInsensitive)) { mUi->runningAfterUploadingComboBox->setCurrentIndex(SettingsManager::value("ev3RunPolicy").toInt()); + } else if (mRobotModelManager.model().kitId().contains("trik", Qt::CaseInsensitive)) { + mUi->runningAfterUploadingComboBox->setCurrentIndex(SettingsManager::value("trikRunPolicy").toInt()); } mUi->devicesConfigurer->refresh(); diff --git a/plugins/robots/interpreters/trikKitInterpreterCommon/trikDefaultSettings.ini b/plugins/robots/interpreters/trikKitInterpreterCommon/trikDefaultSettings.ini index 0912c09e69..ca0afc8cea 100644 --- a/plugins/robots/interpreters/trikKitInterpreterCommon/trikDefaultSettings.ini +++ b/plugins/robots/interpreters/trikKitInterpreterCommon/trikDefaultSettings.ini @@ -3,3 +3,4 @@ FSharpPath=C:/Program Files (x86)/Microsoft SDKs/F#/3.1/Framework/v4.0/Fsc.exe WinScpPath=./winscp/WinSCP.com trikRobot2DImage=./images/trik-robot.png trikCameraImitationImagesDir=@AppDataLocation@/cameraImitation +trikRunPolicy=0 diff --git a/plugins/robots/utils/include/utils/robotCommunication/runProgramProtocol.h b/plugins/robots/utils/include/utils/robotCommunication/runProgramProtocol.h index 2620859207..a64dab21aa 100644 --- a/plugins/robots/utils/include/utils/robotCommunication/runProgramProtocol.h +++ b/plugins/robots/utils/include/utils/robotCommunication/runProgramProtocol.h @@ -44,6 +44,9 @@ class ROBOTS_UTILS_EXPORT RunProgramProtocol : public QObject /// Upload and run program from given file on a robot. void run(const QFileInfo &fileToRun); + /// Run uploaded program from given file on robot. + void runUploaded(const QFileInfo &fileToRun); + signals: /// Emitted when protocol completed successfully. void success(); diff --git a/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp b/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp index b81590e261..74794a528d 100644 --- a/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp +++ b/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp @@ -72,3 +72,20 @@ void RunProgramProtocol::run(const QFileInfo &fileToRun) mProtocol->run(); } + +void RunProgramProtocol::runUploaded(const QFileInfo &fileToRun) +{ + mProtocol->setAction(mWaitingForCasingModel, [](TcpRobotCommunicatorInterface &communicator) { + communicator.requestCasingVersion(); + }); + + mProtocol->setAction(mWaitingForUploadingComplete, [](TcpRobotCommunicatorInterface &communicator) { + emit communicator.uploadProgramDone(); + }); + + mProtocol->setAction(mWaitingForRunComplete, [fileToRun](TcpRobotCommunicatorInterface &communicator) { + communicator.runProgram(fileToRun.fileName()); + }); + + mProtocol->run(); +} From 967981df2a535c992bace133812e3b692254ae69 Mon Sep 17 00:00:00 2001 From: MinyazevR Date: Thu, 27 Feb 2025 20:32:00 +0300 Subject: [PATCH 2/3] Improve code --- .../src/trikPythonGeneratorPluginBase.cpp | 8 +++--- .../robotCommunication/runProgramProtocol.h | 5 +--- .../robotCommunication/runProgramProtocol.cpp | 27 +++++-------------- 3 files changed, 12 insertions(+), 28 deletions(-) diff --git a/plugins/robots/generators/trik/trikPythonGeneratorLibrary/src/trikPythonGeneratorPluginBase.cpp b/plugins/robots/generators/trik/trikPythonGeneratorLibrary/src/trikPythonGeneratorPluginBase.cpp index 5e677faaac..38507d3422 100644 --- a/plugins/robots/generators/trik/trikPythonGeneratorLibrary/src/trikPythonGeneratorPluginBase.cpp +++ b/plugins/robots/generators/trik/trikPythonGeneratorLibrary/src/trikPythonGeneratorPluginBase.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -271,12 +272,11 @@ void TrikPythonGeneratorPluginBase::onProtocolFinished() void TrikPythonGeneratorPluginBase::onUploadSuccess() { auto runPolicy = static_cast(SettingsManager::value("trikRunPolicy").toInt()); - QFileInfo fileInfo; switch (runPolicy) { case RunPolicy::Ask: if (utils::QRealMessageBox::question(mMainWindowInterface->windowWidget() - , tr("The program has been uploaded") - , tr("Do you want to run it?") + , tr("The program has been uploaded") + , tr("Do you want to run it?") ) != QMessageBox::Yes) { break; } @@ -284,7 +284,7 @@ void TrikPythonGeneratorPluginBase::onUploadSuccess() case RunPolicy::AlwaysRun: if (mMainFile != QFileInfo()) { if (mRunProgramProtocol) { - mRunProgramProtocol->runUploaded(mMainFile); + mRunProgramProtocol->run(mMainFile); return; } else { QLOG_ERROR() << "Run program protocol is not initialized"; diff --git a/plugins/robots/utils/include/utils/robotCommunication/runProgramProtocol.h b/plugins/robots/utils/include/utils/robotCommunication/runProgramProtocol.h index a64dab21aa..d51ba68829 100644 --- a/plugins/robots/utils/include/utils/robotCommunication/runProgramProtocol.h +++ b/plugins/robots/utils/include/utils/robotCommunication/runProgramProtocol.h @@ -42,10 +42,7 @@ class ROBOTS_UTILS_EXPORT RunProgramProtocol : public QObject ~RunProgramProtocol() override; /// Upload and run program from given file on a robot. - void run(const QFileInfo &fileToRun); - - /// Run uploaded program from given file on robot. - void runUploaded(const QFileInfo &fileToRun); + void run(const QFileInfo &fileToRun, bool needUpload = true); signals: /// Emitted when protocol completed successfully. diff --git a/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp b/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp index 74794a528d..898acd18c5 100644 --- a/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp +++ b/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp @@ -56,31 +56,18 @@ RunProgramProtocol::~RunProgramProtocol() { } -void RunProgramProtocol::run(const QFileInfo &fileToRun) +void RunProgramProtocol::run(const QFileInfo &fileToRun, bool needUpload) { mProtocol->setAction(mWaitingForCasingModel, [](TcpRobotCommunicatorInterface &communicator) { communicator.requestCasingVersion(); }); - mProtocol->setAction(mWaitingForUploadingComplete, [fileToRun](TcpRobotCommunicatorInterface &communicator) { - communicator.uploadProgram(fileToRun.canonicalFilePath()); - }); - - mProtocol->setAction(mWaitingForRunComplete, [fileToRun](TcpRobotCommunicatorInterface &communicator) { - communicator.runProgram(fileToRun.fileName()); - }); - - mProtocol->run(); -} - -void RunProgramProtocol::runUploaded(const QFileInfo &fileToRun) -{ - mProtocol->setAction(mWaitingForCasingModel, [](TcpRobotCommunicatorInterface &communicator) { - communicator.requestCasingVersion(); - }); - - mProtocol->setAction(mWaitingForUploadingComplete, [](TcpRobotCommunicatorInterface &communicator) { - emit communicator.uploadProgramDone(); + mProtocol->setAction(mWaitingForUploadingComplete, [fileToRun, needUpload](TcpRobotCommunicatorInterface &communicator) { + if (needUpload) { + communicator.uploadProgram(fileToRun.canonicalFilePath()); + } else { + emit communicator.uploadProgramDone(); + } }); mProtocol->setAction(mWaitingForRunComplete, [fileToRun](TcpRobotCommunicatorInterface &communicator) { From 5918eccbd2be5838310d95f99a846c3d9522e4d2 Mon Sep 17 00:00:00 2001 From: MinyazevR Date: Thu, 27 Feb 2025 21:26:37 +0300 Subject: [PATCH 3/3] Add Run after upload support for JavaScript --- .../trikQtsGeneratorPluginBase.h | 5 +++ .../src/trikQtsGeneratorPluginBase.cpp | 41 ++++++++++++++++++- .../robotCommunication/runProgramProtocol.cpp | 3 +- .../fr/plugins/robots/interpreterCore_fr.ts | 2 +- .../robots/trikPythonGeneratorLibrary_fr.ts | 24 ++++++++++- .../robots/trikQtsGeneratorLibrary_fr.ts | 24 ++++++++++- .../ru/plugins/robots/interpreterCore_ru.ts | 2 +- .../robots/trikPythonGeneratorLibrary_ru.ts | 24 ++++++++++- .../robots/trikQtsGeneratorLibrary_ru.ts | 24 ++++++++++- 9 files changed, 136 insertions(+), 13 deletions(-) diff --git a/plugins/robots/generators/trik/trikQtsGeneratorLibrary/include/trikQtsGeneratorLibrary/trikQtsGeneratorPluginBase.h b/plugins/robots/generators/trik/trikQtsGeneratorLibrary/include/trikQtsGeneratorLibrary/trikQtsGeneratorPluginBase.h index cdbba6c96b..a2e0307603 100644 --- a/plugins/robots/generators/trik/trikQtsGeneratorLibrary/include/trikQtsGeneratorLibrary/trikQtsGeneratorPluginBase.h +++ b/plugins/robots/generators/trik/trikQtsGeneratorLibrary/include/trikQtsGeneratorLibrary/trikQtsGeneratorPluginBase.h @@ -84,6 +84,9 @@ private slots: /// Reenables buttons when program uploading or robot stopping is complete (sucessfully or with error). void onProtocolFinished(); + /// Runs after upload if needed + void onUploadSuccess(); + private: /// Disables "run", "upload" and "stop" buttons when there is pending command to a robot. void disableButtons(); @@ -116,6 +119,8 @@ private slots: /// Protocol that is used to stop robot. QScopedPointer mStopRobotProtocol; + + QFileInfo mMainFile; }; } diff --git a/plugins/robots/generators/trik/trikQtsGeneratorLibrary/src/trikQtsGeneratorPluginBase.cpp b/plugins/robots/generators/trik/trikQtsGeneratorLibrary/src/trikQtsGeneratorPluginBase.cpp index 3fe6c93774..5d96d98481 100644 --- a/plugins/robots/generators/trik/trikQtsGeneratorLibrary/src/trikQtsGeneratorPluginBase.cpp +++ b/plugins/robots/generators/trik/trikQtsGeneratorLibrary/src/trikQtsGeneratorPluginBase.cpp @@ -31,7 +31,8 @@ #include #include #include - +#include +#include #include "trikQtsMasterGenerator.h" #include "emptyShell.h" @@ -86,7 +87,7 @@ void TrikQtsGeneratorPluginBase::init(const kitBase::KitPluginConfigurator &conf , this, &TrikQtsGeneratorPluginBase::onProtocolFinished); connect(mUploadProgramProtocol.data(), &UploadProgramProtocol::success - , this, &TrikQtsGeneratorPluginBase::onProtocolFinished); + , this, &TrikQtsGeneratorPluginBase::onUploadSuccess); connect(mRunProgramProtocol.data(), &RunProgramProtocol::success , this, &TrikQtsGeneratorPluginBase::onProtocolFinished); connect(mStopRobotProtocol.data(), &StopRobotProtocol::success @@ -215,6 +216,9 @@ void TrikQtsGeneratorPluginBase::uploadProgram() } if (!files.isEmpty()) { disableButtons(); + if (auto code = dynamic_cast(mMainWindowInterface->currentTab())) { + mMainFile = QFileInfo(mTextManager->path(code)); + } mUploadProgramProtocol->run(files); } else { mMainWindowInterface->errorReporter()->addError( @@ -254,8 +258,41 @@ void TrikQtsGeneratorPluginBase::stopRobot() } } +void TrikQtsGeneratorPluginBase::onUploadSuccess() +{ + auto runPolicy = static_cast(SettingsManager::value("trikRunPolicy").toInt()); + switch (runPolicy) { + case RunPolicy::Ask: + if (utils::QRealMessageBox::question(mMainWindowInterface->windowWidget() + , tr("The program has been uploaded") + , tr("Do you want to run it?") + ) != QMessageBox::Yes) { + break; + } + Q_FALLTHROUGH(); + case RunPolicy::AlwaysRun: + if (mMainFile != QFileInfo()) { + if (mRunProgramProtocol) { + mRunProgramProtocol->run(mMainFile); + return; + } else { + QLOG_ERROR() << "Run program protocol is not initialized"; + } + } else { + utils::QRealMessageBox::question(mMainWindowInterface->windowWidget() + ,tr("Error"), tr("Unknown file to run after upload, please run manually"), + QMessageBox::Ok); + } + break; + case RunPolicy::NeverRun: + break; + } + onProtocolFinished(); +} + void TrikQtsGeneratorPluginBase::onProtocolFinished() { + mMainFile = QFileInfo(); mUploadProgramAction->setEnabled(true); mRunProgramAction->setEnabled(true); mStopRobotAction->setEnabled(true); diff --git a/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp b/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp index 898acd18c5..e4f571c87e 100644 --- a/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp +++ b/plugins/robots/utils/src/robotCommunication/runProgramProtocol.cpp @@ -62,7 +62,8 @@ void RunProgramProtocol::run(const QFileInfo &fileToRun, bool needUpload) communicator.requestCasingVersion(); }); - mProtocol->setAction(mWaitingForUploadingComplete, [fileToRun, needUpload](TcpRobotCommunicatorInterface &communicator) { + mProtocol->setAction(mWaitingForUploadingComplete, + [fileToRun, needUpload](TcpRobotCommunicatorInterface &communicator) { if (needUpload) { communicator.uploadProgram(fileToRun.canonicalFilePath()); } else { diff --git a/qrtranslations/fr/plugins/robots/interpreterCore_fr.ts b/qrtranslations/fr/plugins/robots/interpreterCore_fr.ts index 7ef9624ef6..e8209d3159 100644 --- a/qrtranslations/fr/plugins/robots/interpreterCore_fr.ts +++ b/qrtranslations/fr/plugins/robots/interpreterCore_fr.ts @@ -493,7 +493,7 @@ Aucune extension n'est chargée - + No robot models available for Modèle de robot n'est pas défini dans l'extension diff --git a/qrtranslations/fr/plugins/robots/trikPythonGeneratorLibrary_fr.ts b/qrtranslations/fr/plugins/robots/trikPythonGeneratorLibrary_fr.ts index 2e798b8283..178d175a07 100644 --- a/qrtranslations/fr/plugins/robots/trikPythonGeneratorLibrary_fr.ts +++ b/qrtranslations/fr/plugins/robots/trikPythonGeneratorLibrary_fr.ts @@ -68,7 +68,7 @@ trik::python::TrikPythonGeneratorPluginBase - + Network operation timed out @@ -118,9 +118,29 @@ - + There are no files to upload. You must open or generate at least one *.js or *.py file. + + + The program has been uploaded + Le téléversement du programme est terminé + + + + Do you want to run it? + Est-ce que vous voulez l'executer ? + + + + Error + Erreur + + + + Unknown file to run after upload, please run manually + Fichier inconnu à exécuter après le téléchargement, veuillez l'exécuter manuellement + diff --git a/qrtranslations/fr/plugins/robots/trikQtsGeneratorLibrary_fr.ts b/qrtranslations/fr/plugins/robots/trikQtsGeneratorLibrary_fr.ts index 82eee1a4e7..0677df3f8f 100644 --- a/qrtranslations/fr/plugins/robots/trikQtsGeneratorLibrary_fr.ts +++ b/qrtranslations/fr/plugins/robots/trikQtsGeneratorLibrary_fr.ts @@ -68,7 +68,7 @@ trik::qts::TrikQtsGeneratorPluginBase - + Network operation timed out @@ -118,9 +118,29 @@ - + There are no files to upload. You must open or generate at least one *.js or *.py file. + + + The program has been uploaded + Le téléversement du programme est terminé + + + + Do you want to run it? + Est-ce que vous voulez l'executer ? + + + + Error + Erreur + + + + Unknown file to run after upload, please run manually + Fichier inconnu à exécuter après le téléchargement, veuillez l'exécuter manuellement + diff --git a/qrtranslations/ru/plugins/robots/interpreterCore_ru.ts b/qrtranslations/ru/plugins/robots/interpreterCore_ru.ts index da55aec273..a2e6948258 100644 --- a/qrtranslations/ru/plugins/robots/interpreterCore_ru.ts +++ b/qrtranslations/ru/plugins/robots/interpreterCore_ru.ts @@ -380,7 +380,7 @@ Не загружено ни одного плагина с описанием робоплатформы - + No robot models available for Ни одной модели робота не найдено в плагине diff --git a/qrtranslations/ru/plugins/robots/trikPythonGeneratorLibrary_ru.ts b/qrtranslations/ru/plugins/robots/trikPythonGeneratorLibrary_ru.ts index 1c33cf7fa2..77cbd6841e 100644 --- a/qrtranslations/ru/plugins/robots/trikPythonGeneratorLibrary_ru.ts +++ b/qrtranslations/ru/plugins/robots/trikPythonGeneratorLibrary_ru.ts @@ -68,7 +68,7 @@ trik::python::TrikPythonGeneratorPluginBase - + Network operation timed out Не удалось получить ответ от робота, проверьте настройки, проверьте, включён ли робот @@ -118,9 +118,29 @@ Остановить выполнение программы для TRIK - + There are no files to upload. You must open or generate at least one *.js or *.py file. Нет файлов для загрузки. Вы должны открыть или сгенерировать хотя бы один *.js или *.py файл. + + + The program has been uploaded + Загрузка завершена + + + + Do you want to run it? + Хотите ли Вы запустить эту программу? + + + + Error + Ошибка + + + + Unknown file to run after upload, please run manually + Не удалось запустить программу после загрузки, пожалуйста, попробуйте запустить программу напрямую + diff --git a/qrtranslations/ru/plugins/robots/trikQtsGeneratorLibrary_ru.ts b/qrtranslations/ru/plugins/robots/trikQtsGeneratorLibrary_ru.ts index 18436c4a5c..d7f91cfd54 100644 --- a/qrtranslations/ru/plugins/robots/trikQtsGeneratorLibrary_ru.ts +++ b/qrtranslations/ru/plugins/robots/trikQtsGeneratorLibrary_ru.ts @@ -123,7 +123,7 @@ trik::qts::TrikQtsGeneratorPluginBase - + Network operation timed out Не удалось получить ответ от робота, проверьте настройки, проверьте, включён ли робот @@ -173,10 +173,30 @@ Остановить выполнение программы для TRIK - + There are no files to upload. You must open or generate at least one *.js or *.py file. Нет файлов для загрузки. Вы должны открыть или сгенерировать хотя бы один *.js или *.py файл. + + + The program has been uploaded + Загрузка завершена + + + + Do you want to run it? + Хотите ли Вы запустить эту программу? + + + + Error + Ошибка + + + + Unknown file to run after upload, please run manually + Не удалось запустить программу после загрузки, пожалуйста, попробуйте запустить программу напрямую + No connection to robot Нет соединения с роботом, проверьте настройки, проверьте, включён ли робот