@@ -44,7 +44,6 @@ Runner::Runner(const QString &report, const QString &trajectory)
4444 , mQRealFacade.events()
4545 , mTextManager)
4646 , mReporter(report, trajectory)
47- , mRobotConsole(new qReal::ui::ConsoleDock(tr(" Robot console" )))
4847{
4948 mPluginFacade .init (mConfigurator );
5049 for (const QString &defaultSettingsFile : mPluginFacade .defaultSettingsFiles ()) {
@@ -95,14 +94,20 @@ bool Runner::interpret(const QString &saveFile, bool background)
9594 for (view::TwoDModelWidget * const twoDModelWindow : twoDModelWindows) {
9695 connect (twoDModelWindow, &view::TwoDModelWidget::widgetClosed, &mMainWindow
9796 , [this ]() { this ->mMainWindow .emulateClose (); });
97+ auto layout = dynamic_cast <QGridLayout*>(twoDModelWindow->layout ());
98+ qReal::ui::ConsoleDock* console = nullptr ;
99+ if (layout) {
100+ console = new qReal::ui::ConsoleDock (tr (" Robot console" ), mMainWindow .windowWidget ());
101+ mRobotConsoles << console;
102+ // TODO: hack to add console for each widget
103+ layout->addWidget (console, layout->rowCount (), 0 , 1 , -1 );
104+ }
98105 twoDModelWindow->model ().timeline ().setImmediateMode (background);
99106 for (const model::RobotModel *robotModel : twoDModelWindow->model ().robotModels ()) {
100- connectRobotModel (robotModel);
107+ connectRobotModel (robotModel, console );
101108 }
102109 }
103110
104- mRobotConsole ->show ();
105-
106111 mReporter .onInterpretationStart ();
107112 if (mMode == " script" ) {
108113 return mPluginFacade .interpretCode (mInputsFile );
@@ -113,7 +118,7 @@ bool Runner::interpret(const QString &saveFile, bool background)
113118 return true ;
114119}
115120
116- void Runner::connectRobotModel (const model::RobotModel *robotModel)
121+ void Runner::connectRobotModel (const model::RobotModel *robotModel, const qReal::ui::ConsoleDock* console )
117122{
118123 connect (robotModel, &model::RobotModel::positionRecalculated
119124 , this , &Runner::onRobotRided, Qt::UniqueConnection);
@@ -125,10 +130,11 @@ void Runner::connectRobotModel(const model::RobotModel *robotModel)
125130 , [=](const QString &property, const QVariant &value) {
126131 onDeviceStateChanged (robotModel->info ().robotId (), device, property, value);
127132 });
128-
129- if (auto * shell = dynamic_cast <kitBase::robotModel::robotParts::Shell*>(device)) {
130- connect (shell, &kitBase::robotModel::robotParts::Shell::textPrinted
131- , mRobotConsole , &qReal::ui::ConsoleDock::print);
133+ if (console) {
134+ if (auto * shell = dynamic_cast <kitBase::robotModel::robotParts::Shell*>(device)) {
135+ connect (shell, &kitBase::robotModel::robotParts::Shell::textPrinted
136+ , console, &qReal::ui::ConsoleDock::print);
137+ }
132138 }
133139 });
134140}
@@ -160,4 +166,8 @@ void Runner::onDeviceStateChanged(const QString &robotId
160166void Runner::close ()
161167{
162168 mMainWindow .emulateClose (mReporter .lastMessageIsError () ? 1 : 0 );
169+ while (!mRobotConsoles .empty ()) {
170+ mRobotConsoles .first ()->deleteLater ();
171+ mRobotConsoles .removeFirst ();
172+ }
163173}
0 commit comments