19 #include <QGridLayout> 23 #include <QFileDialog> 32 struct QmitkPythonTextEditorData
36 QAction* m_LoadScript;
37 QAction* m_SaveScript;
43 QGridLayout* m_Layout;
51 :QWidget(parent), d(new QmitkPythonTextEditorData)
57 d->m_LoadScript =
new QAction(
this);
58 d->m_LoadScript->setToolTip(
"Load script from disk.");
59 d->m_LoadScript->setObjectName(QString::fromUtf8(
"LoadScript"));
61 icon2.addFile(QString::fromUtf8(
":/mitkPython/document-open.png"), QSize(), QIcon::Normal, QIcon::Off);
62 d->m_LoadScript->setIcon(icon2);
64 d->m_SaveScript =
new QAction(
this);
65 d->m_SaveScript->setToolTip(
"Save script to disk.");
66 d->m_SaveScript->setObjectName(QString::fromUtf8(
"SaveScript"));
68 icon3.addFile(QString::fromUtf8(
":/mitkPython/document-save.png"), QSize(), QIcon::Normal, QIcon::Off);
69 d->m_SaveScript->setIcon(icon3);
71 d->m_RunScript =
new QAction(
this);
72 d->m_RunScript->setToolTip(
"Run the current script.");
73 d->m_RunScript->setObjectName(QString::fromUtf8(
"RunScript"));
75 icon4.addFile(QString::fromUtf8(
":/mitkPython/media-playback-start.png"), QSize(), QIcon::Normal, QIcon::Off);
76 d->m_RunScript->setIcon(icon4);
78 d->m_Toolbar =
new QToolBar;
79 d->m_Toolbar->addAction( d->m_LoadScript );
80 d->m_Toolbar->addAction( d->m_SaveScript );
81 d->m_Toolbar->addAction( d->m_RunScript );
83 d->m_Content =
new QTextEdit(
this);
84 d->m_Content->setObjectName(QString::fromUtf8(
"Content"));
88 d->m_Layout =
new QGridLayout;
89 d->m_Layout->addWidget( d->m_Toolbar, 0, 0, 1, 1 );
90 d->m_Layout->addWidget( d->m_Content, 1, 0, 1, 1 );
91 d->m_Layout->setContentsMargins(2,2,2,2);
93 this->setLayout(d->m_Layout);
94 QMetaObject::connectSlotsByName(
this);
100 context->UngetService( d->m_PythonServiceRef );
112 QList<QUrl> urls =
event->mimeData()->urls();
113 for(
int i = 0; i < urls.size(); i++)
115 this->
Paste( urls[i].toString() );
127 if( this->isVisible() )
129 d->m_Content->insertPlainText(command +
"\n");
136 QFile file(filename);
137 if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
139 MITK_ERROR <<
"Could not open file " << filename.toStdString();
145 while (!file.atEnd())
147 line = file.read(1024);
151 return QString(total);
156 d->m_FileName = QFileDialog::getSaveFileName(
this,tr(
"Save File"), d->m_FileName,tr(
"*.py"));
157 if( d->m_FileName.compare(
"") != 0)
159 std::ofstream myfile;
160 myfile.open(d->m_FileName.toLocal8Bit().data());
161 myfile << d->m_Content->toPlainText().toLocal8Bit().data();
168 d->m_FileName = QFileDialog::getOpenFileName(
this,
"Load Script", d->m_FileName, tr(
"*.py"));
169 if( !d->m_FileName.isEmpty() )
171 QString contents = this->
ReadFile( d->m_FileName );
172 d->m_Content->setText(contents);
178 if( !d->m_PythonService )
180 MITK_ERROR <<
"Python service not available.";
~QmitkPythonTextEditor() override
void Paste(const QString &command)
void on_LoadScript_triggered(bool checked=false)
void dragEnterEvent(QDragEnterEvent *event) override
static const int MULTI_LINE_COMMAND
void dropEvent(QDropEvent *event) override
void on_SaveScript_triggered(bool checked=false)
QmitkPythonTextEditor(QWidget *parent=nullptr)
QString ReadFile(const QString &filename)
A script highlighter for Python Scripts.
static ModuleContext * GetModuleContext()
Returns the module context of the calling module.
void on_RunScript_triggered(bool checked=false)