diff --git a/GUI/coregui/Views/SimulationWidgets/PythonScriptWidget.cpp b/GUI/coregui/Views/SimulationWidgets/PythonScriptWidget.cpp
index 50215f638c7663d44a1eaea4975c3f15e62e65a1..72859d8e67548fa212633cff015dda609358ee86 100644
--- a/GUI/coregui/Views/SimulationWidgets/PythonScriptWidget.cpp
+++ b/GUI/coregui/Views/SimulationWidgets/PythonScriptWidget.cpp
@@ -18,33 +18,25 @@
 #include "DesignerHelper.h"
 #include "DomainSimulationBuilder.h"
 #include "GISASSimulation.h"
-#include "InstrumentModel.h"
 #include "PythonFormatting.h"
 #include "PythonSyntaxHighlighter.h"
-#include "SampleModel.h"
-#include "SimulationOptionsItem.h"
-#include "WarningSignWidget.h"
-#include "projectdocument.h"
-#include "projectmanager.h"
-#include <QDir>
-#include <QFile>
+#include "WarningSign.h"
 #include <QFileDialog>
 #include <QMessageBox>
 #include <QPushButton>
-#include <QScrollBar>
 #include <QStandardPaths>
 #include <QStyle>
 #include <QTextEdit>
 #include <QTextStream>
 #include <QToolBar>
-#include <QToolButton>
 #include <QVBoxLayout>
+#include <memory>
 
 PythonScriptWidget::PythonScriptWidget(QWidget *parent)
     : QDialog(parent)
     , m_toolBar(0)
-    , m_textEdit(0)
-    , m_warningSign(0)
+    , m_textEdit(new QTextEdit)
+    , m_warningSign(new WarningSign(m_textEdit))
 {
     setWindowTitle("Python Script View");
     setMinimumSize(128, 128);
@@ -65,7 +57,6 @@ PythonScriptWidget::PythonScriptWidget(QWidget *parent)
     exportToFileButton->setAutoDefault(false);
     m_toolBar->addWidget(exportToFileButton);
 
-    m_textEdit = new QTextEdit;
     m_textEdit->setReadOnly(true);
     QFont textFont("Monospace");
     m_textEdit->setFont(textFont);
@@ -91,11 +82,9 @@ void PythonScriptWidget::generatePythonScript(const MultiLayerItem *sampleItem,
                                               const QString &outputDir)
 {
     m_outputDir = outputDir;
+    m_warningSign->clear();
 
-    delete m_warningSign;
-    m_warningSign = 0;
-
-    try{
+    try {
         const std::unique_ptr<GISASSimulation> P_simulation(
             DomainSimulationBuilder::getSimulation(sampleItem, instrumentItem, optionItem));
 
@@ -105,41 +94,26 @@ void PythonScriptWidget::generatePythonScript(const MultiLayerItem *sampleItem,
         m_textEdit->setText(code);
 
     } catch(const std::exception &ex) {
-        m_warningSign = new WarningSignWidget(this);
-
         QString message = QString(
             "Generation of Python Script failed. Code is not complete.\n\n"
             "It can happen if sample requires further assembling or some of sample parameters "
             "are not valid. See details below.\n\n%1").arg(QString::fromStdString(ex.what()));
 
         m_warningSign->setWarningMessage(message);
-        QPoint pos = getPositionForWarningSign();
-        m_warningSign->setPosition(pos.x(), pos.y());
-        m_warningSign->show();
-    }
-}
-
-//! adjusts position of warning label on widget move
-void PythonScriptWidget::resizeEvent(QResizeEvent *event)
-{
-    Q_UNUSED(event);
-    if(m_warningSign) {
-        QPoint pos = getPositionForWarningSign();
-        m_warningSign->setPosition(pos.x(),pos.y());
     }
 }
 
 void PythonScriptWidget::onExportToFileButton()
 {
     QString dirname(m_outputDir);
-    if(dirname.isEmpty())
+    if (dirname.isEmpty())
         dirname = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
 
-    QString file_name = QFileDialog::getSaveFileName(this, "Select file", dirname,
-                            "Python scipts (*.py)", 0,
-                            QFileDialog::DontResolveSymlinks);
+    QString file_name = QFileDialog::getSaveFileName(
+        this, "Select file", dirname, "Python scipts (*.py)", 0, QFileDialog::DontResolveSymlinks);
 
-    if(file_name.isEmpty()) return;
+    if (file_name.isEmpty())
+        return;
 
     QFile file(file_name);
     if (!file.open(QIODevice::WriteOnly)) {
@@ -154,26 +128,3 @@ void PythonScriptWidget::onExportToFileButton()
     file.close();
     raise();
 }
-
-//! Returns position for warning sign at the bottom left corner of the editor. The position will
-//! be adjusted according to the visibility of scroll bars
-QPoint PythonScriptWidget::getPositionForWarningSign()
-{
-    const int warning_sign_xpos = 38;
-    const int warning_sign_ypos = 38;
-
-    int x = width()-warning_sign_xpos;
-    int y = height()-warning_sign_ypos;
-
-    if(QScrollBar *horizontal = m_textEdit->horizontalScrollBar()) {
-        if(horizontal->isVisible())
-            y -= horizontal->height();
-    }
-
-    if(QScrollBar *vertical = m_textEdit->verticalScrollBar()) {
-        if(vertical->isVisible())
-            x -= vertical->width();
-    }
-
-    return QPoint(x, y);
-}
diff --git a/GUI/coregui/Views/SimulationWidgets/PythonScriptWidget.h b/GUI/coregui/Views/SimulationWidgets/PythonScriptWidget.h
index 1aeb94460adafc3bd7111e959925038a16176257..7206d7c9e989df07196900fc42d6ab352c7f06b8 100644
--- a/GUI/coregui/Views/SimulationWidgets/PythonScriptWidget.h
+++ b/GUI/coregui/Views/SimulationWidgets/PythonScriptWidget.h
@@ -22,40 +22,33 @@
 
 class QToolBar;
 class QTextEdit;
-class WarningSignWidget;
-class ProjectManager;
-class SampleModel;
-class InstrumentModel;
+class WarningSign;
 class MultiLayerItem;
 class InstrumentItem;
 class SimulationOptionsItem;
 
 //! The PythonScriptWidget displays a python script which represents full simulation.
 //! Part of SimulationSetupWidget
+
 class BA_CORE_API_ PythonScriptWidget : public QDialog
 {
     Q_OBJECT
 
 public:
-    PythonScriptWidget(QWidget *parent = 0);
-
-    void generatePythonScript(const MultiLayerItem *sampleItem,
-                              const InstrumentItem *instrumentItem,
-                              const SimulationOptionsItem *optionItem = 0,
-                              const QString &outputDir = QString());
+    PythonScriptWidget(QWidget* parent = 0);
 
-protected:
-    virtual void resizeEvent(QResizeEvent *event);
+    void generatePythonScript(const MultiLayerItem* sampleItem,
+                              const InstrumentItem* instrumentItem,
+                              const SimulationOptionsItem* optionItem = 0,
+                              const QString& outputDir = QString());
 
 private slots:
     void onExportToFileButton();
 
 private:
-    QPoint getPositionForWarningSign();
-
-    QToolBar *m_toolBar;
-    QTextEdit *m_textEdit;
-    WarningSignWidget *m_warningSign;
+    QToolBar* m_toolBar;
+    QTextEdit* m_textEdit;
+    WarningSign* m_warningSign;
     QString m_outputDir;
 };