Skip to content

Commit 1fc35d3

Browse files
committed
Fixes #1656
1 parent 79f7fef commit 1fc35d3

File tree

4 files changed

+25
-20
lines changed

4 files changed

+25
-20
lines changed

src/Interface/Application/NetworkEditor.h

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,17 @@ namespace Gui {
269269
using ConnectorFunc = std::function<void(NetworkEditor*)>;
270270
static void setConnectorFunc(ConnectorFunc func) { connectorFunc_ = func; }
271271

272+
struct InEditingContext
273+
{
274+
explicit InEditingContext(NetworkEditor* ed)
275+
{
276+
inEditingContext_ = ed;
277+
}
278+
~InEditingContext()
279+
{
280+
inEditingContext_ = nullptr;
281+
}
282+
};
272283
protected:
273284
void dropEvent(QDropEvent* event) override;
274285
void dragEnterEvent(QDragEnterEvent* event) override;
@@ -438,17 +449,7 @@ namespace Gui {
438449
}
439450

440451
static NetworkEditor* inEditingContext_;
441-
struct InEditingContext
442-
{
443-
explicit InEditingContext(NetworkEditor* ed)
444-
{
445-
inEditingContext_ = ed;
446-
}
447-
~InEditingContext()
448-
{
449-
inEditingContext_ = nullptr;
450-
}
451-
};
452+
452453
static ConnectorFunc connectorFunc_;
453454
static std::function<QPointF(const QRectF&)> topSubnetPortHolderPositioner_;
454455
static std::function<QPointF(const QRectF&)> bottomSubnetPortHolderPositioner_;

src/Interface/Application/PythonConsoleWidget.cc

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939

4040
#include <Core/Python/PythonInterpreter.h>
4141
#include <Interface/Application/PythonConsoleWidget.h>
42+
#include <Interface/Application/NetworkEditor.h>
4243

4344
using namespace SCIRun::Core;
4445
using namespace SCIRun::Gui;
@@ -49,7 +50,7 @@ typedef QPointer< PythonConsoleEdit > PythonConsoleEditQWeakPointer;
4950
class PythonConsoleEdit : public QTextEdit
5051
{
5152
public:
52-
explicit PythonConsoleEdit(PythonConsoleWidget* parent);
53+
PythonConsoleEdit(NetworkEditor* rootNetworkEditor, PythonConsoleWidget* parent);
5354

5455
virtual void keyPressEvent(QKeyEvent* e);
5556
//virtual void focusOutEvent( QFocusEvent* e );
@@ -71,6 +72,8 @@ class PythonConsoleEdit : public QTextEdit
7172
void print_errorImpl(const QString& text);
7273
void print_commandImpl(const QString& text);
7374

75+
NetworkEditor* rootNetworkEditor_;
76+
7477
public:
7578
// The beginning of the area of interactive input, outside which
7679
// changes can't be made to the text edit contents.
@@ -87,8 +90,8 @@ class PythonConsoleEdit : public QTextEdit
8790
// static void PrintCommand( PythonConsoleEditQWeakPointer edit, const std::string& text );
8891
};
8992

90-
PythonConsoleEdit::PythonConsoleEdit(PythonConsoleWidget* parent) :
91-
QTextEdit(parent)
93+
PythonConsoleEdit::PythonConsoleEdit(NetworkEditor* rootNetworkEditor, PythonConsoleWidget* parent) :
94+
QTextEdit(parent), rootNetworkEditor_(rootNetworkEditor)
9295
{
9396
this->interactive_position_ = this->document_end();
9497
this->setTabChangesFocus(false);
@@ -303,6 +306,7 @@ void PythonConsoleEdit::issue_command()
303306

304307
this->interactive_position_ = this->document_end();
305308

309+
NetworkEditor::InEditingContext iec(rootNetworkEditor_);
306310
auto lines = command.split(QRegExp("[\r\n]"),QString::SkipEmptyParts);
307311
for (const auto& line : lines)
308312
{
@@ -390,14 +394,14 @@ class PythonConsoleWidgetPrivate
390394
PythonConsoleEdit* console_edit_;
391395
};
392396

393-
PythonConsoleWidget::PythonConsoleWidget(QWidget* parent) :
397+
PythonConsoleWidget::PythonConsoleWidget(NetworkEditor* rootNetworkEditor, QWidget* parent) :
394398
QDockWidget(parent),
395399
private_(new PythonConsoleWidgetPrivate)
396400
{
397-
this->private_->console_edit_ = new PythonConsoleEdit(this);
398-
setWidget(this->private_->console_edit_);
401+
private_->console_edit_ = new PythonConsoleEdit(rootNetworkEditor, this);
402+
setWidget(private_->console_edit_);
399403

400-
this->setMinimumSize(500, 500);
404+
setMinimumSize(500, 500);
401405

402406
setWindowTitle("Python console");
403407

src/Interface/Application/PythonConsoleWidget.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class PythonConsoleWidget : public QDockWidget
4646
Q_OBJECT
4747

4848
public:
49-
PythonConsoleWidget( QWidget* parent = 0 );
49+
explicit PythonConsoleWidget(class NetworkEditor* rootNetworkEditor, QWidget* parent = nullptr);
5050
virtual ~PythonConsoleWidget();
5151

5252
public Q_SLOTS:

src/Interface/Application/SCIRunMainWindow.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1045,7 +1045,7 @@ void SCIRunMainWindow::setupPreferencesWindow()
10451045
void SCIRunMainWindow::setupPythonConsole()
10461046
{
10471047
#ifdef BUILD_WITH_PYTHON
1048-
pythonConsole_ = new PythonConsoleWidget(this);
1048+
pythonConsole_ = new PythonConsoleWidget(networkEditor_, this);
10491049
connect(actionPythonConsole_, SIGNAL(toggled(bool)), pythonConsole_, SLOT(setVisible(bool)));
10501050
actionPythonConsole_->setIcon(QPixmap(":/general/Resources/terminal.png"));
10511051
connect(pythonConsole_, SIGNAL(visibilityChanged(bool)), actionPythonConsole_, SLOT(setChecked(bool)));

0 commit comments

Comments
 (0)