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; };