| 22 | static bool installInProgress; |
| 23 | |
| 24 | PythonDependencyMessage::PythonDependencyMessage(QWidget *parent, AbstractPythonInterface *interface, bool setupErrorOnly) |
| 25 | : KMessageWidget(parent) |
| 26 | , m_interface(interface) |
| 27 | { |
| 28 | setWordWrap(true); |
| 29 | setCloseButtonVisible(false); |
| 30 | if (m_interface->status() == AbstractPythonInterface::Installed) { |
| 31 | hide(); |
| 32 | } |
| 33 | setText(i18n("Check configuration")); |
| 34 | m_installAction = new QAction(QIcon::fromTheme(QStringLiteral("download")), i18n("Install"), this); |
| 35 | m_abortAction = new QAction(i18n("Abort installation"), this); |
| 36 | addAction(m_installAction); |
| 37 | connect(m_abortAction, &QAction::triggered, m_interface, &AbstractPythonInterface::abortScript); |
| 38 | connect(m_interface, &AbstractPythonInterface::setupError, this, [&](const QString &message) { |
| 39 | if (m_interface->m_installStatus == AbstractPythonInterface::NotInstalled) { |
| 40 | removeAction(m_abortAction); |
| 41 | m_installAction->setEnabled(true); |
| 42 | } |
| 43 | doShowMessage(message, KMessageWidget::Warning); |
| 44 | }); |
| 45 | connect(m_interface, &AbstractPythonInterface::installStatusChanged, this, [&]() { |
| 46 | switch (m_interface->status()) { |
| 47 | case AbstractPythonInterface::Installed: |
| 48 | hide(); |
| 49 | break; |
| 50 | case AbstractPythonInterface::InProgress: |
| 51 | setMessageType(KMessageWidget::Information); |
| 52 | setText(i18n("Installing… please be patient, this can take several minutes")); |
| 53 | m_installAction->setEnabled(false); |
| 54 | addAction(m_abortAction); |
| 55 | show(); |
| 56 | break; |
| 57 | default: |
| 58 | setMessageType(KMessageWidget::Warning); |
| 59 | setText(i18n("Install plugin to use")); |
| 60 | m_installAction->setEnabled(true); |
| 61 | removeAction(m_abortAction); |
| 62 | show(); |
| 63 | break; |
| 64 | } |
| 65 | }); |
| 66 | |
| 67 | connect(m_interface, &AbstractPythonInterface::setupMessage, this, |
| 68 | [&](const QString &message, int messageType) { doShowMessage(message, KMessageWidget::MessageType(messageType)); }); |
| 69 | |
| 70 | if (!setupErrorOnly) { |
| 71 | connect(m_interface, &AbstractPythonInterface::checkVersionsResult, this, [&](const QStringList &list) { |
| 72 | removeAction(m_abortAction); |
| 73 | if (list.isEmpty()) { |
| 74 | if (m_interface->featureName().isEmpty()) { |
| 75 | doShowMessage(i18n("Everything is properly configured."), KMessageWidget::Positive); |
| 76 | } else { |
| 77 | doShowMessage(i18n("%1 is properly configured.", m_interface->featureName()), KMessageWidget::Positive); |
| 78 | } |
| 79 | } else { |
| 80 | if (m_interface->featureName().isEmpty()) { |
| 81 | doShowMessage(i18n("Everything is configured:<br>%1", list.join(QStringLiteral(", "))), KMessageWidget::Positive); |
nothing calls this directly
no test coverage detected