diff --git a/Modules/QtWidgetsExt/files.cmake b/Modules/QtWidgetsExt/files.cmake index 8a7b348f0a..a13bc3ce58 100644 --- a/Modules/QtWidgetsExt/files.cmake +++ b/Modules/QtWidgetsExt/files.cmake @@ -1,94 +1,91 @@ file(GLOB_RECURSE H_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/include/*") set(CPP_FILES qclickablelabel.cpp QmitkAboutDialog.cpp QmitkBasePropertyView.cpp QmitkBoolPropertyWidget.cpp QmitkBoundingObjectWidget.cpp QmitkCallbackFromGUIThread.cpp QmitkColorPropertyEditor.cpp QmitkColorPropertyView.cpp QmitkColorTransferFunctionCanvas.cpp QmitkCrossWidget.cpp QmitkEditPointDialog.cpp QmitkEnumerationPropertyWidget.cpp QmitkFileChooser.cpp - QmitkGnuplotWidget.cpp QmitkHistogram.cpp QmitkHotkeyLineEdit.cpp QmitkModulesDialog.cpp QmitkModuleTableModel.cpp QmitkNumberPropertyEditor.cpp QmitkNumberPropertySlider.cpp QmitkNumberPropertyView.cpp QmitkPiecewiseFunctionCanvas.cpp QmitkPlotDialog.cpp QmitkPlotWidget.cpp QmitkPointListModel.cpp QmitkPointListView.cpp QmitkPointListWidget.cpp QmitkPrimitiveMovieNavigatorWidget.cpp QmitkPropertyViewFactory.cpp QmitkSliceWidget.cpp QmitkStandardViews.cpp QmitkStringPropertyEditor.cpp QmitkStringPropertyOnDemandEdit.cpp QmitkStringPropertyView.cpp QmitkTransferFunctionCanvas.cpp QmitkTransferFunctionGeneratorWidget.cpp QmitkTransferFunctionWidget.cpp QmitkUGCombinedRepresentationPropertyWidget.cpp QmitkVideoBackground.cpp QtWidgetsExtRegisterClasses.cpp ) set(MOC_H_FILES include/qclickablelabel.h include/QmitkAboutDialog.h include/QmitkBasePropertyView.h include/QmitkBoolPropertyWidget.h include/QmitkBoundingObjectWidget.h include/QmitkCallbackFromGUIThread.h include/QmitkColorPropertyEditor.h include/QmitkColorPropertyView.h include/QmitkColorTransferFunctionCanvas.h include/QmitkCrossWidget.h include/QmitkEditPointDialog.h include/QmitkEnumerationPropertyWidget.h include/QmitkFileChooser.h - include/QmitkGnuplotWidget.h include/QmitkHotkeyLineEdit.h include/QmitkNumberPropertyEditor.h include/QmitkNumberPropertySlider.h include/QmitkNumberPropertyView.h include/QmitkPiecewiseFunctionCanvas.h include/QmitkPlotWidget.h include/QmitkPointListModel.h include/QmitkPointListView.h include/QmitkPointListWidget.h include/QmitkPrimitiveMovieNavigatorWidget.h include/QmitkSliceWidget.h include/QmitkStandardViews.h include/QmitkStringPropertyEditor.h include/QmitkStringPropertyOnDemandEdit.h include/QmitkStringPropertyView.h include/QmitkTransferFunctionCanvas.h include/QmitkTransferFunctionGeneratorWidget.h include/QmitkTransferFunctionWidget.h include/QmitkUGCombinedRepresentationPropertyWidget.h include/QmitkVideoBackground.h ) set(UI_FILES src/QmitkAboutDialogGUI.ui - src/QmitkGnuplotWidget.ui src/QmitkPrimitiveMovieNavigatorWidget.ui src/QmitkSliceWidget.ui src/QmitkTransferFunctionGeneratorWidget.ui src/QmitkTransferFunctionWidget.ui ) set(QRC_FILES resource/QtWidgetsExt.qrc ) diff --git a/Modules/QtWidgetsExt/include/QmitkGnuplotWidget.h b/Modules/QtWidgetsExt/include/QmitkGnuplotWidget.h deleted file mode 100644 index 25d895be44..0000000000 --- a/Modules/QtWidgetsExt/include/QmitkGnuplotWidget.h +++ /dev/null @@ -1,74 +0,0 @@ -/*============================================================================ - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center (DKFZ) -All rights reserved. - -Use of this source code is governed by a 3-clause BSD license that can be -found in the LICENSE file. - -============================================================================*/ - -#ifndef QmitkGnuplotWidget_h -#define QmitkGnuplotWidget_h - -#include -#include -#include -#include -#include - -class QAction; -class QMenu; - -namespace Ui -{ - class QmitkGnuplotWidget; -} - -class MITKQTWIDGETSEXT_EXPORT QmitkGnuplotWidget : public QWidget -{ - Q_OBJECT - -public: - explicit QmitkGnuplotWidget(QWidget *parent = nullptr); - ~QmitkGnuplotWidget() override; - - QString GetGnuplotPath() const; - void SetGnuplotPath(const QString &path); - - QStringList GetCommands() const; - void SetCommands(const QStringList &commands); - - void Update(); - - QSize sizeHint() const override; - -protected: - void contextMenuEvent(QContextMenuEvent *event) override; - void resizeEvent(QResizeEvent *event) override; - -private slots: - void OnProcessStateChanged(QProcess::ProcessState state); - void OnProcessError(QProcess::ProcessError error); - void OnProcessFinished(int exitCode, QProcess::ExitStatus exitStatus); - void OnCopyPlot(); - void OnCopyScript(); - -private: - void CreateContextMenu(); - QString CreateSetTermCommand() const; - - QScopedPointer m_Ui; - QMenu *m_ContextMenu; - QAction *m_CopyPlotAction; - QAction *m_CopyScriptAction; - QProcess *m_Process; - QString m_GnuplotPath; - QStringList m_Commands; - itk::TimeStamp m_ModifiedTime; - itk::TimeStamp m_UpdateTime; -}; - -#endif diff --git a/Modules/QtWidgetsExt/src/QmitkGnuplotWidget.cpp b/Modules/QtWidgetsExt/src/QmitkGnuplotWidget.cpp deleted file mode 100644 index d7dce8f540..0000000000 --- a/Modules/QtWidgetsExt/src/QmitkGnuplotWidget.cpp +++ /dev/null @@ -1,217 +0,0 @@ -/*============================================================================ - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center (DKFZ) -All rights reserved. - -Use of this source code is governed by a 3-clause BSD license that can be -found in the LICENSE file. - -============================================================================*/ - -#include "QmitkGnuplotWidget.h" -#include -#include -#include -#include - -QmitkGnuplotWidget::QmitkGnuplotWidget(QWidget *parent) - : QWidget(parent), - m_Ui(new Ui::QmitkGnuplotWidget), - m_ContextMenu(nullptr), - m_CopyPlotAction(nullptr), - m_CopyScriptAction(nullptr), - m_Process(new QProcess(this)) -{ - m_Ui->setupUi(this); - - connect( - m_Process, SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(OnProcessStateChanged(QProcess::ProcessState))); - connect(m_Process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(OnProcessError(QProcess::ProcessError))); - connect( - m_Process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(OnProcessFinished(int, QProcess::ExitStatus))); - - this->CreateContextMenu(); -} - -QmitkGnuplotWidget::~QmitkGnuplotWidget() -{ -} - -void QmitkGnuplotWidget::CreateContextMenu() -{ - m_CopyPlotAction = new QAction("Copy &Plot", this); - connect(m_CopyPlotAction, SIGNAL(triggered()), this, SLOT(OnCopyPlot())); - - m_CopyScriptAction = new QAction("Copy &Script", this); - connect(m_CopyScriptAction, SIGNAL(triggered()), this, SLOT(OnCopyScript())); - - m_ContextMenu = new QMenu(this); - - m_ContextMenu->addActions(QList() << m_CopyPlotAction << m_CopyScriptAction); -} - -void QmitkGnuplotWidget::contextMenuEvent(QContextMenuEvent *event) -{ - auto plot = m_Ui->label->pixmap(); - - m_CopyPlotAction->setEnabled(!plot.isNull()); - m_CopyScriptAction->setEnabled(!m_Commands.empty()); - - m_ContextMenu->popup(event->globalPos()); - - event->accept(); -} - -void QmitkGnuplotWidget::OnCopyPlot() -{ - auto plot = m_Ui->label->pixmap(); - - if (!plot.isNull()) - QApplication::clipboard()->setPixmap(plot); -} - -void QmitkGnuplotWidget::OnCopyScript() -{ - if (m_Commands.empty()) - return; - - QString script = this->CreateSetTermCommand(); - - Q_FOREACH (const QString &command, m_Commands) - { - script += command + "\n"; - } - - QApplication::clipboard()->setText(script); -} - -void QmitkGnuplotWidget::resizeEvent(QResizeEvent *) -{ - m_ModifiedTime.Modified(); - - if (m_Process->isOpen() || m_Commands.isEmpty() || m_GnuplotPath.isEmpty()) - return; - - this->Update(); -} - -QString QmitkGnuplotWidget::GetGnuplotPath() const -{ - return m_GnuplotPath; -} - -void QmitkGnuplotWidget::SetGnuplotPath(const QString &path) -{ - m_GnuplotPath = path; - m_ModifiedTime.Modified(); -} - -QStringList QmitkGnuplotWidget::GetCommands() const -{ - return m_Commands; -} - -void QmitkGnuplotWidget::SetCommands(const QStringList &commands) -{ - m_Commands = commands; - m_ModifiedTime.Modified(); -} - -void QmitkGnuplotWidget::Update() -{ - if (m_UpdateTime < m_ModifiedTime) - m_Process->start(m_GnuplotPath, QStringList() << "-"); -} - -QSize QmitkGnuplotWidget::sizeHint() const -{ - return QSize(400, 300); -} - -QString QmitkGnuplotWidget::CreateSetTermCommand() const -{ - return QString("set term pngcairo size %1,%2 enhanced font '%3,%4'\n") - .arg(this->width()) - .arg(this->height()) - .arg(this->font().family()) - .arg(this->font().pointSize()); -} - -void QmitkGnuplotWidget::OnProcessStateChanged(QProcess::ProcessState state) -{ - if (state == QProcess::Running) - { - m_UpdateTime = m_ModifiedTime; - - m_Process->write(this->CreateSetTermCommand().toLatin1()); - - Q_FOREACH (const QString &command, m_Commands) - { - m_Process->write(QString("%1\n").arg(command).toLatin1()); - } - - m_Process->write("exit\n"); - m_Process->closeWriteChannel(); - } -} - -void QmitkGnuplotWidget::OnProcessError(QProcess::ProcessError error) -{ - switch (error) - { - case QProcess::FailedToStart: - m_Ui->label->setText("Gnuplot failed to start!"); - break; - - case QProcess::Crashed: - m_Ui->label->setText("Gnuplot crashed!"); - break; - - case QProcess::Timedout: - m_Ui->label->setText("Gnuplot timed out!"); - break; - - case QProcess::WriteError: - m_Ui->label->setText("Could not write to gnuplot!"); - break; - - case QProcess::ReadError: - m_Ui->label->setText("Could not read from gnuplot!"); - break; - - default: - m_Ui->label->setText("An unknown error occurred!"); - break; - } -} - -void QmitkGnuplotWidget::OnProcessFinished(int exitCode, QProcess::ExitStatus exitStatus) -{ - bool needUpdate = false; - - if (exitStatus != QProcess::CrashExit) - { - if (exitCode == 0) - { - if (m_UpdateTime < m_ModifiedTime) - { - needUpdate = true; - } - else - { - m_Ui->label->setPixmap(QPixmap::fromImage(QImage::fromData(m_Process->readAllStandardOutput(), "PNG"))); - } - } - else - { - m_Ui->label->setText(QString("Gnuplot exit code: %1!").arg(exitCode)); - } - } - - m_Process->close(); - - if (needUpdate) - this->Update(); -} diff --git a/Modules/QtWidgetsExt/src/QmitkGnuplotWidget.ui b/Modules/QtWidgetsExt/src/QmitkGnuplotWidget.ui deleted file mode 100644 index c36919fa6c..0000000000 --- a/Modules/QtWidgetsExt/src/QmitkGnuplotWidget.ui +++ /dev/null @@ -1,56 +0,0 @@ - - - QmitkGnuplotWidget - - - - 0 - 0 - 400 - 300 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 1 - 1 - - - - background-color: rgb(255, 255, 255); -color: rgb(255, 0, 0); - - - true - - - Qt::AlignCenter - - - true - - - Qt::NoTextInteraction - - - - - - - - diff --git a/Plugins/org.mitk.gui.qt.ext/files.cmake b/Plugins/org.mitk.gui.qt.ext/files.cmake index d00f357e6c..b4b7d9d037 100644 --- a/Plugins/org.mitk.gui.qt.ext/files.cmake +++ b/Plugins/org.mitk.gui.qt.ext/files.cmake @@ -1,61 +1,58 @@ set(SRC_CPP_FILES QmitkExtActionBarAdvisor.cpp QmitkExtWorkbenchWindowAdvisor.cpp QmitkExtFileSaveProjectAction.cpp QmitkOpenDicomEditorAction.cpp QmitkOpenMxNMultiWidgetEditorAction.cpp QmitkOpenStdMultiWidgetEditorAction.cpp ) set(INTERNAL_CPP_FILES QmitkAboutHandler.cpp QmitkAppInstancesPreferencePage.cpp - QmitkExternalProgramsPreferencePage.cpp QmitkCommonExtPlugin.cpp QmitkModuleView.cpp ) set(UI_FILES src/internal/QmitkAppInstancesPreferencePage.ui - src/internal/QmitkExternalProgramsPreferencePage.ui ) set(MOC_H_FILES src/QmitkExtFileSaveProjectAction.h src/QmitkExtWorkbenchWindowAdvisor.h src/internal/QmitkAboutHandler.h src/internal/QmitkAppInstancesPreferencePage.h - src/internal/QmitkExternalProgramsPreferencePage.h src/internal/QmitkCommonExtPlugin.h src/internal/QmitkExtWorkbenchWindowAdvisorHack.h src/internal/QmitkModuleView.h src/QmitkOpenDicomEditorAction.h src/QmitkOpenMxNMultiWidgetEditorAction.h src/QmitkOpenStdMultiWidgetEditorAction.h ) set(CACHED_RESOURCE_FILES # list of resource files which can be used by the plug-in # system without loading the plug-ins shared library, # for example the icon used in the menu and tabs for the # plug-in views in the workbench plugin.xml resources/ModuleView.png ) set(QRC_FILES # uncomment the following line if you want to use Qt resources resources/org_mitk_gui_qt_ext.qrc resources/org_mitk_icons.qrc ) set(CPP_FILES ) foreach(file ${SRC_CPP_FILES}) set(CPP_FILES ${CPP_FILES} src/${file}) endforeach(file ${SRC_CPP_FILES}) foreach(file ${INTERNAL_CPP_FILES}) set(CPP_FILES ${CPP_FILES} src/internal/${file}) endforeach(file ${INTERNAL_CPP_FILES}) diff --git a/Plugins/org.mitk.gui.qt.ext/plugin.xml b/Plugins/org.mitk.gui.qt.ext/plugin.xml index 2c87bf9f64..293a24f24a 100644 --- a/Plugins/org.mitk.gui.qt.ext/plugin.xml +++ b/Plugins/org.mitk.gui.qt.ext/plugin.xml @@ -1,37 +1,32 @@ - - - - diff --git a/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkCommonExtPlugin.cpp b/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkCommonExtPlugin.cpp index 99394e3e56..390dfdf75f 100644 --- a/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkCommonExtPlugin.cpp +++ b/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkCommonExtPlugin.cpp @@ -1,238 +1,236 @@ /*============================================================================ The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center (DKFZ) All rights reserved. Use of this source code is governed by a 3-clause BSD license that can be found in the LICENSE file. ============================================================================*/ #include "QmitkCommonExtPlugin.h" #include #include "QmitkAboutHandler.h" #include "QmitkAppInstancesPreferencePage.h" -#include "QmitkExternalProgramsPreferencePage.h" #include "QmitkModuleView.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include US_INITIALIZE_MODULE ctkPluginContext* QmitkCommonExtPlugin::_context = nullptr; void QmitkCommonExtPlugin::start(ctkPluginContext* context) { this->_context = context; QtWidgetsExtRegisterClasses(); BERRY_REGISTER_EXTENSION_CLASS(QmitkAboutHandler, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkAppInstancesPreferencePage, context) - BERRY_REGISTER_EXTENSION_CLASS(QmitkExternalProgramsPreferencePage, context) BERRY_REGISTER_EXTENSION_CLASS(QmitkModuleView, context) if (qApp->metaObject()->indexOfSignal("messageReceived(QByteArray)") > -1) { connect(qApp, SIGNAL(messageReceived(QByteArray)), this, SLOT(handleIPCMessage(QByteArray))); } // This is a potentially long running operation. loadDataFromDisk(berry::Platform::GetApplicationArgs(), true); } void QmitkCommonExtPlugin::stop(ctkPluginContext* context) { Q_UNUSED(context) this->_context = nullptr; } ctkPluginContext* QmitkCommonExtPlugin::getContext() { return _context; } void QmitkCommonExtPlugin::loadDataFromDisk(const QStringList &arguments, bool globalReinit) { if (!arguments.empty()) { ctkServiceReference serviceRef = _context->getServiceReference(); if (serviceRef) { mitk::IDataStorageService* dataStorageService = _context->getService(serviceRef); mitk::DataStorage::Pointer dataStorage = dataStorageService->GetDefaultDataStorage()->GetDataStorage(); int argumentsAdded = 0; for (int i = 0; i < arguments.size(); ++i) { if (arguments[i].right(5) == ".mitk") { mitk::SceneIO::Pointer sceneIO = mitk::SceneIO::New(); bool clearDataStorageFirst(false); mitk::ProgressBar::GetInstance()->AddStepsToDo(2); dataStorage = sceneIO->LoadScene( arguments[i].toLocal8Bit().constData(), dataStorage, clearDataStorageFirst ); mitk::ProgressBar::GetInstance()->Progress(2); argumentsAdded++; } else if (arguments[i].right(15) == ".mitksceneindex") { mitk::SceneIO::Pointer sceneIO = mitk::SceneIO::New(); bool clearDataStorageFirst(false); mitk::ProgressBar::GetInstance()->AddStepsToDo(2); dataStorage = sceneIO->LoadSceneUnzipped(arguments[i].toLocal8Bit().constData(), dataStorage, clearDataStorageFirst); mitk::ProgressBar::GetInstance()->Progress(2); argumentsAdded++; } else { try { const std::string path(arguments[i].toStdString()); auto addedNodes = mitk::IOUtil::Load(path, *dataStorage); for (const auto& node : *addedNodes ) { node->SetIntProperty("layer", argumentsAdded); } argumentsAdded++; } catch(...) { MITK_WARN << "Failed to load command line argument: " << arguments[i].toStdString(); } } } // end for each command line argument if (argumentsAdded > 0 && globalReinit) { // calculate bounding geometry mitk::RenderingManager::GetInstance()->InitializeViews(dataStorage->ComputeBoundingGeometry3D()); } } else { MITK_ERROR << "A service reference for mitk::IDataStorageService does not exist"; } } } void QmitkCommonExtPlugin::startNewInstance(const QStringList &args, const QStringList& files) { QStringList newArgs(args); #ifdef Q_OS_UNIX newArgs << QString("--") + mitk::BaseApplication::ARG_NEWINSTANCE; #else newArgs << QString("/") + mitk::BaseApplication::ARG_NEWINSTANCE; #endif newArgs << files; QProcess::startDetached(qApp->applicationFilePath(), newArgs); } void QmitkCommonExtPlugin::handleIPCMessage(const QByteArray& msg) { QDataStream ds(msg); QString msgType; ds >> msgType; // we only handle messages containing command line arguments if (msgType != "$cmdLineArgs") return; // activate the current workbench window berry::IWorkbenchWindow::Pointer window = berry::PlatformUI::GetWorkbench()->GetActiveWorkbenchWindow(); QMainWindow* mainWindow = static_cast (window->GetShell()->GetControl()); mainWindow->setWindowState(mainWindow->windowState() & ~Qt::WindowMinimized); mainWindow->raise(); mainWindow->activateWindow(); // Get the preferences for the instantiation behavior auto* prefService = mitk::CoreServices::GetPreferencesService(); auto* prefs = prefService->GetSystemPreferences()->Node("/General"); bool newInstanceAlways = prefs->GetBool("newInstance.always", false); bool newInstanceScene = prefs->GetBool("newInstance.scene", true); QStringList args; ds >> args; QStringList fileArgs; QStringList sceneArgs; foreach (QString arg, args) { if (arg.endsWith(".mitk")) { sceneArgs << arg; } else { fileArgs << arg; } } if (newInstanceAlways) { if (newInstanceScene) { startNewInstance(args, fileArgs); foreach(QString sceneFile, sceneArgs) { startNewInstance(args, QStringList(sceneFile)); } } else { fileArgs.append(sceneArgs); startNewInstance(args, fileArgs); } } else { loadDataFromDisk(fileArgs, false); if (newInstanceScene) { foreach(QString sceneFile, sceneArgs) { startNewInstance(args, QStringList(sceneFile)); } } else { loadDataFromDisk(sceneArgs, false); } } } diff --git a/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkExternalProgramsPreferencePage.cpp b/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkExternalProgramsPreferencePage.cpp deleted file mode 100644 index c9d0fb7efa..0000000000 --- a/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkExternalProgramsPreferencePage.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/*============================================================================ - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center (DKFZ) -All rights reserved. - -Use of this source code is governed by a 3-clause BSD license that can be -found in the LICENSE file. - -============================================================================*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "QmitkExternalProgramsPreferencePage.h" - -namespace -{ - mitk::IPreferences* GetPreferences() - { - auto* preferencesService = mitk::CoreServices::GetPreferencesService(); - return preferencesService->GetSystemPreferences()->Node("org.mitk.gui.qt.ext.externalprograms"); - } -} - -QmitkExternalProgramsPreferencePage::QmitkExternalProgramsPreferencePage() - : m_Ui(new Ui::QmitkExternalProgramsPreferencePage), - m_Control(nullptr), - m_GnuplotProcess(nullptr) -{ -} - -QmitkExternalProgramsPreferencePage::~QmitkExternalProgramsPreferencePage() -{ -} - -void QmitkExternalProgramsPreferencePage::CreateQtControl(QWidget* parent) -{ - m_Control = new QWidget(parent); - m_GnuplotProcess = new QProcess(m_Control); - - m_Ui->setupUi(m_Control); - - connect(m_GnuplotProcess, SIGNAL(error(QProcess::ProcessError)), this, SLOT(OnGnuplotProcessError(QProcess::ProcessError))); - connect(m_GnuplotProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(OnGnuplotProcessFinished(int, QProcess::ExitStatus))); - connect(m_Ui->gnuplotButton, SIGNAL(clicked()), this, SLOT(OnGnuplotButtonClicked())); - - this->Update(); -} - -void QmitkExternalProgramsPreferencePage::OnGnuplotButtonClicked() -{ - QString filter = "gnuplot executable "; - -#if defined(WIN32) - filter += "(gnuplot.exe)"; -#else - filter += "(gnuplot)"; -#endif - - QString gnuplotPath = QFileDialog::getOpenFileName(m_Control, "Gnuplot", "", filter); - - if (!gnuplotPath.isEmpty()) - { - m_GnuplotPath = gnuplotPath; - m_GnuplotProcess->start(gnuplotPath, QStringList() << "--version", QProcess::ReadOnly); - } -} - -void QmitkExternalProgramsPreferencePage::OnGnuplotProcessError(QProcess::ProcessError) -{ - m_GnuplotPath.clear(); - m_Ui->gnuplotLineEdit->clear(); -} - -void QmitkExternalProgramsPreferencePage::OnGnuplotProcessFinished(int exitCode, QProcess::ExitStatus exitStatus) -{ - if (exitStatus == QProcess::NormalExit && exitCode == 0) - { - QString output = QTextCodec::codecForName("UTF-8")->toUnicode(m_GnuplotProcess->readAllStandardOutput()); - - if (output.startsWith("gnuplot")) - { - m_Ui->gnuplotLineEdit->setText(m_GnuplotPath); - return; - } - } - - m_GnuplotPath.clear(); - m_Ui->gnuplotLineEdit->clear(); -} - -QWidget* QmitkExternalProgramsPreferencePage::GetQtControl() const -{ - return m_Control; -} - -void QmitkExternalProgramsPreferencePage::Init(berry::IWorkbench::Pointer) -{ -} - -void QmitkExternalProgramsPreferencePage::PerformCancel() -{ -} - -bool QmitkExternalProgramsPreferencePage::PerformOk() -{ - auto* prefs = GetPreferences(); - - prefs->Put("gnuplot", m_GnuplotPath.toStdString()); - - return true; -} - -void QmitkExternalProgramsPreferencePage::Update() -{ - auto* prefs = GetPreferences(); - - m_GnuplotPath = QString::fromStdString(prefs->Get("gnuplot", "")); - - if (!m_GnuplotPath.isEmpty()) - m_GnuplotProcess->start(m_GnuplotPath, QStringList() << "--version", QProcess::ReadOnly); -} diff --git a/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkExternalProgramsPreferencePage.h b/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkExternalProgramsPreferencePage.h deleted file mode 100644 index 2457e3b42f..0000000000 --- a/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkExternalProgramsPreferencePage.h +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================ - -The Medical Imaging Interaction Toolkit (MITK) - -Copyright (c) German Cancer Research Center (DKFZ) -All rights reserved. - -Use of this source code is governed by a 3-clause BSD license that can be -found in the LICENSE file. - -============================================================================*/ - -#ifndef QmitkExternalProgramsPreferencePage_h -#define QmitkExternalProgramsPreferencePage_h - -#include -#include -#include - -namespace Ui -{ - class QmitkExternalProgramsPreferencePage; -} - -class QmitkExternalProgramsPreferencePage : public QObject, public berry::IQtPreferencePage -{ - Q_OBJECT - Q_INTERFACES(berry::IPreferencePage) - -public: - QmitkExternalProgramsPreferencePage(); - ~QmitkExternalProgramsPreferencePage() override; - - void CreateQtControl(QWidget* parent) override; - QWidget* GetQtControl() const override; - void Init(berry::IWorkbench::Pointer) override; - void PerformCancel() override; - bool PerformOk() override; - void Update() override; - -private slots: - void OnGnuplotButtonClicked(); - void OnGnuplotProcessError(QProcess::ProcessError error); - void OnGnuplotProcessFinished(int exitCode, QProcess::ExitStatus exitStatus); - -private: - QScopedPointer m_Ui; - QWidget* m_Control; - - QProcess* m_GnuplotProcess; - QString m_GnuplotPath; -}; - -#endif diff --git a/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkExternalProgramsPreferencePage.ui b/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkExternalProgramsPreferencePage.ui deleted file mode 100644 index 69f491a9e4..0000000000 --- a/Plugins/org.mitk.gui.qt.ext/src/internal/QmitkExternalProgramsPreferencePage.ui +++ /dev/null @@ -1,52 +0,0 @@ - - - QmitkExternalProgramsPreferencePage - - - - 0 - 0 - 400 - 152 - - - - External Programs - - - - - - gnuplot: - - - Qt::PlainText - - - gnuplotButton - - - - - - - - - true - - - - - - - ... - - - - - - - - - -