Skip to content

Commit 40e924b

Browse files
authored
Merge pull request #648 from IKhonakhbeeva/script_upload
Upload all 'py' and 'js' files on TRIK
2 parents ef739b8 + 721a2dc commit 40e924b

File tree

17 files changed

+188
-119
lines changed

17 files changed

+188
-119
lines changed

plugins/robots/generators/trik/trikPythonGeneratorLibrary/src/trikPythonGeneratorPluginBase.cpp

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <utils/robotCommunication/stopRobotProtocol.h>
3030
#include <utils/robotCommunication/uploadProgramProtocol.h>
3131
#include <utils/robotCommunication/networkCommunicationErrorReporter.h>
32+
#include <qrgui/textEditor/qscintillaTextEdit.h>
3233

3334
#include "trikPythonMasterGenerator.h"
3435
#include "emptyShell.h"
@@ -107,25 +108,29 @@ QList<ActionInfo> TrikPythonGeneratorPluginBase::customActions()
107108
mGenerateCodeAction->setText(tr("Generate python code"));
108109
mGenerateCodeAction->setIcon(QIcon(":/trik/python/images/generatePythonCode.svg"));
109110
ActionInfo generateCodeActionInfo(mGenerateCodeAction, "generators", "tools");
110-
connect(mGenerateCodeAction, SIGNAL(triggered()), this, SLOT(generateCode()), Qt::UniqueConnection);
111+
connect(mGenerateCodeAction, &QAction::triggered, this
112+
, &TrikPythonGeneratorPluginBase::generateCode, Qt::UniqueConnection);
111113

112114
mUploadProgramAction->setObjectName("uploadPythonTrikProgram");
113115
mUploadProgramAction->setText(tr("Upload program"));
114116
mUploadProgramAction->setIcon(QIcon(":/trik/python/images/uploadProgram.svg"));
115117
ActionInfo uploadProgramActionInfo(mUploadProgramAction, "generators", "tools");
116-
connect(mUploadProgramAction, SIGNAL(triggered()), this, SLOT(uploadProgram()), Qt::UniqueConnection);
118+
connect(mUploadProgramAction, &QAction::triggered, this
119+
, &TrikPythonGeneratorPluginBase::uploadProgram, Qt::UniqueConnection);
117120

118121
mRunProgramAction->setObjectName("runPythonTrikProgram");
119122
mRunProgramAction->setText(tr("Run program"));
120123
mRunProgramAction->setIcon(QIcon(":/trik/python/images/run.png"));
121124
ActionInfo runProgramActionInfo(mRunProgramAction, "interpreters", "tools");
122-
connect(mRunProgramAction, SIGNAL(triggered()), this, SLOT(runProgram()), Qt::UniqueConnection);
125+
connect(mRunProgramAction, &QAction::triggered, this
126+
, &TrikPythonGeneratorPluginBase::runProgram, Qt::UniqueConnection);
123127

124128
mStopRobotAction->setObjectName("stopPythonTrikRobot");
125129
mStopRobotAction->setText(tr("Stop robot"));
126130
mStopRobotAction->setIcon(QIcon(":/trik/python/images/stop.png"));
127131
ActionInfo stopRobotActionInfo(mStopRobotAction, "interpreters", "tools");
128-
connect(mStopRobotAction, SIGNAL(triggered()), this, SLOT(stopRobot()), Qt::UniqueConnection);
132+
connect(mStopRobotAction, &QAction::triggered, this
133+
, &TrikPythonGeneratorPluginBase::stopRobot, Qt::UniqueConnection);
129134

130135
return {generateCodeActionInfo, uploadProgramActionInfo, runProgramActionInfo, stopRobotActionInfo};
131136
}
@@ -188,13 +193,26 @@ void TrikPythonGeneratorPluginBase::addShellDevice(robotModel::GeneratorModelExt
188193

189194
void TrikPythonGeneratorPluginBase::uploadProgram()
190195
{
191-
const QFileInfo fileInfo = generateCodeForProcessing();
192-
193-
if (fileInfo != QFileInfo() && !fileInfo.absoluteFilePath().isEmpty()) {
194-
disableButtons();
195-
mUploadProgramProtocol->run(fileInfo);
196+
if (mUploadProgramProtocol) {
197+
QList<QFileInfo> files;
198+
auto const &tabs = mMainWindowInterface->allTabs();
199+
for (auto &&tab : tabs) {
200+
if (auto * code = dynamic_cast<qReal::text::QScintillaTextEdit *>(tab)) {
201+
auto const &ext = code->currentLanguage().extension;
202+
if (ext == "js" || ext == "py") {
203+
files << QFileInfo(mTextManager->path(code));
204+
}
205+
}
206+
}
207+
if (!files.isEmpty()) {
208+
disableButtons();
209+
mUploadProgramProtocol->run(files);
210+
} else {
211+
mMainWindowInterface->errorReporter()->addError(
212+
tr("There are no files to upload. You must open or generate at least one *.js or *.py file."));
213+
}
196214
} else {
197-
QLOG_ERROR() << "Code generation failed, aborting";
215+
QLOG_ERROR() << "Upload program protocol is not initialized";
198216
}
199217
}
200218

plugins/robots/generators/trik/trikPythonGeneratorLibrary/trikPythonGeneratorLibrary.pro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ includes(plugins/robots/generators/trik/trikGeneratorBase \
2929
)
3030

3131
links(qrkernel qslog qrutils qrrepo qscintilla2 robots-generator-base robots-trik-generator-base \
32-
robots-kit-base robots-trik-kit robots-utils \
32+
robots-kit-base robots-trik-kit robots-utils qrgui-text-editor \
3333
)
3434

3535
TRANSLATIONS = \

plugins/robots/generators/trik/trikQtsGeneratorLibrary/src/trikQtsGeneratorPluginBase.cpp

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <utils/robotCommunication/stopRobotProtocol.h>
3030
#include <utils/robotCommunication/uploadProgramProtocol.h>
3131
#include <utils/robotCommunication/networkCommunicationErrorReporter.h>
32+
#include <qrgui/textEditor/qscintillaTextEdit.h>
3233

3334
#include "trikQtsMasterGenerator.h"
3435
#include "emptyShell.h"
@@ -107,25 +108,29 @@ QList<ActionInfo> TrikQtsGeneratorPluginBase::customActions()
107108
mGenerateCodeAction->setText(tr("Generate TRIK code"));
108109
mGenerateCodeAction->setIcon(QIcon(":/trik/qts/images/generateQtsCode.svg"));
109110
ActionInfo generateCodeActionInfo(mGenerateCodeAction, "generators", "tools");
110-
connect(mGenerateCodeAction, SIGNAL(triggered()), this, SLOT(generateCode()), Qt::UniqueConnection);
111+
connect(mGenerateCodeAction, &QAction::triggered, this
112+
, &TrikQtsGeneratorPluginBase::generateCode, Qt::UniqueConnection);
111113

112114
mUploadProgramAction->setObjectName("uploadProgram");
113115
mUploadProgramAction->setText(tr("Upload program"));
114116
mUploadProgramAction->setIcon(QIcon(":/trik/qts/images/uploadProgram.svg"));
115117
ActionInfo uploadProgramActionInfo(mUploadProgramAction, "generators", "tools");
116-
connect(mUploadProgramAction, SIGNAL(triggered()), this, SLOT(uploadProgram()), Qt::UniqueConnection);
118+
connect(mUploadProgramAction, &QAction::triggered, this
119+
, &TrikQtsGeneratorPluginBase::uploadProgram, Qt::UniqueConnection);
117120

118121
mRunProgramAction->setObjectName("runProgram");
119122
mRunProgramAction->setText(tr("Run program"));
120123
mRunProgramAction->setIcon(QIcon(":/trik/qts/images/run.png"));
121124
ActionInfo runProgramActionInfo(mRunProgramAction, "interpreters", "tools");
122-
connect(mRunProgramAction, SIGNAL(triggered()), this, SLOT(runProgram()), Qt::UniqueConnection);
125+
connect(mRunProgramAction, &QAction::triggered, this
126+
, &TrikQtsGeneratorPluginBase::runProgram, Qt::UniqueConnection);
123127

124128
mStopRobotAction->setObjectName("stopRobot");
125129
mStopRobotAction->setText(tr("Stop robot"));
126130
mStopRobotAction->setIcon(QIcon(":/trik/qts/images/stop.png"));
127131
ActionInfo stopRobotActionInfo(mStopRobotAction, "interpreters", "tools");
128-
connect(mStopRobotAction, SIGNAL(triggered()), this, SLOT(stopRobot()), Qt::UniqueConnection);
132+
connect(mStopRobotAction, &QAction::triggered, this
133+
, &TrikQtsGeneratorPluginBase::stopRobot, Qt::UniqueConnection);
129134

130135
return {generateCodeActionInfo, uploadProgramActionInfo, runProgramActionInfo, stopRobotActionInfo};
131136
}
@@ -188,13 +193,26 @@ void TrikQtsGeneratorPluginBase::addShellDevice(robotModel::GeneratorModelExtens
188193

189194
void TrikQtsGeneratorPluginBase::uploadProgram()
190195
{
191-
const QFileInfo fileInfo = generateCodeForProcessing();
192-
193-
if (fileInfo != QFileInfo() && !fileInfo.absoluteFilePath().isEmpty()) {
194-
disableButtons();
195-
mUploadProgramProtocol->run(fileInfo);
196+
if (mUploadProgramProtocol) {
197+
QList<QFileInfo> files;
198+
auto const &tabs = mMainWindowInterface->allTabs();
199+
for (auto &&tab : tabs) {
200+
if (auto * code = dynamic_cast<qReal::text::QScintillaTextEdit *>(tab)) {
201+
auto const &ext = code->currentLanguage().extension;
202+
if (ext == "js" || ext == "py") {
203+
files << QFileInfo(mTextManager->path(code));
204+
}
205+
}
206+
}
207+
if (!files.isEmpty()) {
208+
disableButtons();
209+
mUploadProgramProtocol->run(files);
210+
} else {
211+
mMainWindowInterface->errorReporter()->addError(
212+
tr("There are no files to upload. You must open or generate at least one *.js or *.py file."));
213+
}
196214
} else {
197-
QLOG_ERROR() << "Code generation failed, aborting";
215+
QLOG_ERROR() << "Upload program protocol is not initialized";
198216
}
199217
}
200218

plugins/robots/utils/include/utils/robotCommunication/uploadProgramProtocol.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class ROBOTS_UTILS_EXPORT UploadProgramProtocol : public QObject
4141
~UploadProgramProtocol() override;
4242

4343
/// Upload program from given file to a robot.
44-
void run(const QFileInfo &programToUpload);
44+
void run(const QList<QFileInfo> &programToUpload);
4545

4646
signals:
4747
/// Emitted when protocol completed successfully.

plugins/robots/utils/src/robotCommunication/uploadProgramProtocol.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,13 @@ UploadProgramProtocol::~UploadProgramProtocol()
3838
{
3939
}
4040

41-
void UploadProgramProtocol::run(const QFileInfo &programToUpload)
41+
void UploadProgramProtocol::run(const QList<QFileInfo> &programsToUpload)
4242
{
4343
mProtocol->setAction(mWaitingForUploadingComplete
44-
, [programToUpload](TcpRobotCommunicatorInterface &communicator) {
45-
communicator.uploadProgram(programToUpload.canonicalFilePath());
44+
, [programsToUpload](TcpRobotCommunicatorInterface &communicator) {
45+
for (auto &&programToUpload : programsToUpload) {
46+
communicator.uploadProgram(programToUpload.canonicalFilePath());
47+
}
4648
});
4749

4850
mProtocol->run();

0 commit comments

Comments
 (0)