21#ifndef __qSlicerExtensionsManagerModel_h
22#define __qSlicerExtensionsManagerModel_h
33#include <ctkErrorLogModel.h>
36#include "qSlicerBaseQTCoreExport.h"
40class qSlicerExtensionsManagerModelPrivate;
41class QStandardItemModel;
81 typedef qSlicerExtensionsManagerModelPrivate
Pimpl;
298 Q_INVOKABLE
bool installExtension(
const QString &archiveFile,
bool installDependencies =
true,
bool waitForCompletion =
false);
309 const QString &archiveFile,
bool installDependencies =
true,
310 bool waitForCompletion =
false);
321 const QString& archiveFile,
322 const QString &destinationPath);
325 Q_INVOKABLE
const QStandardItemModel *
model()
const;
351 const QString& arrayName,
const QString fieldName);
354 const QString& arrayName,
const QString fieldName);
523 qint64 received, qint64 total);
570 void messageLogged(
const QString& text, ctkErrorLogLevel::LogLevels level)
const;
593 qint64 received, qint64 total);
598 QScopedPointer<qSlicerExtensionsManagerModelPrivate>
d_ptr;
bool newExtensionEnabledByDefault() const
void setNewExtensionEnabledByDefault(bool value)
int numberOfInstalledExtensions() const
Return the number of installed extensions. Deprecated, use installedExtensionsCount instead.
QStringList managedExtensions
Names of extensions that are installed or bookmarked.
bool autoUpdateCheck
Download extensions metadata from the server at application startup to allow the application to displ...
void slicerVersionChanged(const QString &slicerVersion)
void updateExtensionsMetadataFromServerCompleted(bool success)
Emitted when metadata download from the extensions server is completed.
void extensionCancelledScheduleForUpdate(const QString &extensionName)
QStringList activeTasks() const
Number of operations in progress.
static ExtensionMetadataType parseExtensionDescriptionFile(const QString &file)
Q_INVOKABLE QUrl extensionsListUrl() const
Returns the URL of the extensions manager frontend for the current application version and operating ...
QStringList managedExtensions() const
Return names of all managed extensions, i.e., installed or bookmarked extensions.
Q_INVOKABLE ExtensionMetadataType extensionMetadata(const QString &extensionName, int source=MetadataAll) const
QVariantMap ExtensionMetadataType
Extension metadata typedef.
void autoUpdateSettingsChanged()
Emitted when autoUpdateCheck, autoUpdateInstall, or autoInstallDependencies properties are changed.
QStringList bookmarkedExtensions() const
Return names of all bookmarked extensions.
void extensionScheduledForUpdate(const QString &extensionName)
Q_INVOKABLE QStringList isExtensionCompatible(const QString &extensionName) const
Check if extensionName is compatible. An extension is considered incompatible when the version of Sli...
int managedExtensionsCount
Number of extensions that are installed or bookmarked.
QStringList installedExtensions() const
Return names of all installed extensions sorted in alphabetical order.
Q_INVOKABLE bool waitForAllTasksCompletion(int timeoutMsec=-1) const
bool exportExtensionList(QString &exportFilePath)
void slicerArchChanged(const QString &slicerArch)
static ExtensionMetadataType filterExtensionMetadata(const ExtensionMetadataType &extensionMetadata, int serverAPI)
void extensionUninstalled(const QString &extensionName)
void setSlicerRequirements(const QString &revision, const QString &os, const QString &arch)
Convenience function setting Slicer revision, operating system and architecture.
void extensionUpdatesAvailable(bool available)
Emitted after updates are checked on the extensions server.
bool autoUpdateInstall() const
QStringList scheduledForUninstallExtensions() const
Return names of all extensions scheduled for uninstall.
QObject Superclass
Superclass typedef.
QScopedPointer< qSlicerExtensionsManagerModelPrivate > d_ptr
void onInstallDownloadFinished(qSlicerExtensionDownloadTask *task)
bool scheduleExtensionForUpdate(const QString &extensionName)
void extensionMetadataUpdated(const QString &extensionName)
Emitted when extension metadata (description, icon URL, etc. is updated)
void updateModel()
Full update of the extensions from extension description files and settings.
void installDownloadProgress(const QString &extensionName, qint64 received, qint64 total)
int installedExtensionsCount
bool autoUpdateCheck() const
void slicerRevisionChanged(const QString &slicerRevision)
int managedExtensionsCount() const
Return the number of managed extensions.
void slicerOsChanged(const QString &slicerOs)
Q_INVOKABLE bool isExtensionBookmarked(const QString &extensionName) const
Return True if the extensionName is bookmarked. Bookmarked extensions are included in the list of man...
QString slicerVersion() const
bool autoInstallDependencies() const
bool scheduleExtensionForUninstall(const QString &extensionName)
Schedule extensionName of uninstall Tell the application to uninstall extensionName when it will rest...
bool updateExtensionsMetadataFromServer(bool force=false, bool waitForCompletion=false)
Q_INVOKABLE QString extensionDescription(const QString &extensionName) const
void onInstallDownloadProgress(qSlicerExtensionDownloadTask *task, qint64 received, qint64 total)
bool newExtensionEnabledByDefault
void interactiveChanged(bool interactive)
bool onExtensionsMetadataFromServerQueryFinished(const QUuid &requestId)
static QHash< QString, QString > serverToExtensionDescriptionKey(int serverAPI)
Q_INVOKABLE QString extensionInstallPath(const QString &extensionName) const
void downloadStarted(QNetworkReply *reply)
QString slicerRevision() const
Set/Get Slicer revision.
bool autoUpdateInstall
Automatically install any extension updates.
bool cancelExtensionScheduledForUninstall(const QString &extensionName)
Cancel the uninstallation of extensionName Tell the application to keep extensionName installed.
void downloadFinished(QNetworkReply *reply)
@ MetadataServer
return metadata downloaded from the server
@ MetadataAll
return local metadata, and if any fields are not set locally then set it from the server
@ MetadataLocal
return local metadata (stored in s4ext files in the extensions folder)
Q_INVOKABLE QString extensionDescriptionFile(const QString &extensionName) const
int installedExtensionsCount() const
Return the number of installed extensions.
static ExtensionMetadataType convertExtensionMetadata(const ExtensionMetadataType &extensionMetadata, int serverAPI)
void aboutToLoadExtensions()
void extensionCancelledScheduleForUninstall(const QString &extensionName)
void setAutoUpdateInstall(bool enable)
void setSlicerArch(const QString &arch)
QStringList installedExtensions
QStringList enabledExtensions() const
Return names of all enabled extensions sorted in alphabetical order.
QStringList scheduledForUpdateExtensions() const
void setAutoInstallDependencies(bool enable)
QString slicerOs() const
Set/Get Slicer operating system.
Q_INVOKABLE bool installExtension(const QString &extensionName, ExtensionMetadataType extensionMetadata, const QString &archiveFile, bool installDependencies=true, bool waitForCompletion=false)
qSlicerExtensionsManagerModelPrivate Pimpl
Pimpl typedef.
void extensionScheduledForUninstall(const QString &extensionName)
void setExtensionBookmarked(const QString &extensionName, bool value)
Add/remove bookmark for an extension. Add/remove this extension from the list of bookmarked extension...
int numberOfInstalledExtensions
bool uninstallScheduledExtensions(QStringList &uninstalledExtensions)
void extensionUpdateAvailable(const QString &extensionName)
qSlicerExtensionsManagerModel(QObject *parent=nullptr)
Constructor.
void setSlicerVersion(const QString &version)
Q_INVOKABLE bool installExtension(const QString &archiveFile, bool installDependencies=true, bool waitForCompletion=false)
void extensionsSettingsFilePathChanged(const QString &extensionsSettingsFilePath)
void onUpdateDownloadProgress(qSlicerExtensionDownloadTask *task, qint64 received, qint64 total)
QStringList bookmarkedExtensions
Names of bookmarked extensions.
void onUpdateDownloadFinished(qSlicerExtensionDownloadTask *task)
bool downloadAndInstallExtension(const QString &extensionId, bool installDependencies=true, bool waitForCompletion=false)
Download and install extensionId The extensionId corresponds to the identifier used on the extension ...
void newExtensionEnabledByDefaultChanged(bool value)
void setSlicerOs(const QString &os)
bool installExtensionFromServer(const QString &extensionName, bool restart=true, bool update=false)
Download and install an extension from the extensions server.
Q_INVOKABLE QStringList extensionModulePaths(const QString &extensionName) const
bool autoInstallDependencies
Automatically install all dependencies (other extensions that the installed extension requires) when ...
void setSlicerRevision(const QString &revision)
void activeTasksChanged()
Emitted when background tasks are started or completed.
Q_INVOKABLE bool isExtensionEnabled(const QString &extensionName) const
Return True if the extensionName is enabled.
static QStringList serverKeysToIgnore(int serverAPI)
void updateDownloadProgress(const QString &extensionName, qint64 received, qint64 total)
Q_INVOKABLE bool extractExtensionArchive(const QString &extensionName, const QString &archiveFile, const QString &destinationPath)
Extract archiveFile into destinationPath/extensionName directory.
void extensionInstalled(const QString &extensionName)
bool downloadAndInstallExtensionByName(const QString &extensionName, bool installDependencies=true, bool waitForCompletion=false)
Download and install extensionId The extensionId corresponds to the identifier used on the extension ...
Q_INVOKABLE bool isExtensionUpdateAvailable(const QString &extensionName) const
Q_INVOKABLE bool isExtensionScheduledForUninstall(const QString &extensionName) const
Return True if the extensionName is scheduled to be uninstalled.
QString extensionsSettingsFilePath() const
Set/Get extension settings file path.
bool updateScheduledExtensions()
void messageLogged(const QString &text, ctkErrorLogLevel::LogLevels level) const
qSlicerExtensionsManagerModel Self
Self typedef.
void identifyIncompatibleExtensions()
Q_INVOKABLE QUrl frontendServerUrl() const
Frontend server URL displaying extension manager web page.
void setAutoUpdateCheck(bool enable)
QString slicerArch() const
Set/Get Slicer architecture.
static QString serverAPIToString(int serverAPI)
Q_INVOKABLE bool isExtensionInstalled(const QString &extensionName) const
Return True if the extensionName is installed.
bool uninstallScheduledExtensions()
bool cancelExtensionScheduledForUpdate(const QString &extensionName)
Cancel the update of extensionName Tell the application to keep extensionName installed.
void setExtensionEnabled(const QString &extensionName, bool value)
Enable or disable an extension. Tell the application to load (or skip the loading) of extensionName b...
QStringList enabledExtensions
void slicerRequirementsChanged(const QString &revision, const QString &os, const QString &arch)
void extensionUpdated(const QString &extensionName)
void extensionEnabledChanged(const QString &extensionName, bool value)
Q_INVOKABLE QString extensionsInstallPath() const
Q_INVOKABLE const QStandardItemModel * model() const
Return the item model used internally.
QStringList availableUpdateExtensions
Names of extensions that have updates available on the server.
QString extensionsSettingsFilePath
static int serverAPIFromString(const QString &str)
bool updateScheduledExtensions(QStringList &updatedExtensions)
Q_INVOKABLE bool isExtensionScheduledForUpdate(const QString &extensionName) const
bool isExtensionLoaded(const QString &extensionName) const
Return True if the extensionName is loaded.
void checkForExtensionsUpdates()
void extensionBookmarkedChanged(const QString &extensionName, bool value)
Emitted when bookmark is added to or removed from an extension.
void extensionIdentifedAsIncompatible(const QString &extensionName)
QDateTime lastUpdateTimeExtensionsMetadataFromServer()
void setExtensionsSettingsFilePath(const QString &extensionsSettingsFilePath)
void setInteractive(bool value)
Q_INVOKABLE QStringList isExtensionCompatible(const QString &extensionName, const QString &slicerRevision, const QString &slicerOs, const QString &slicerArch) const
Check if extensionName is compatible with the system identified by slicerRevision,...
QStringList availableUpdateExtensions() const
static bool writeExtensionDescriptionFile(const QString &file, const ExtensionMetadataType &metadata)
static void writeArrayValues(QSettings &settings, const QStringList &values, const QString &arrayName, const QString fieldName)
Q_INVOKABLE QUrl serverUrl() const
Backend server URL used to perform API calls.
static QStringList readArrayValues(QSettings &settings, const QString &arrayName, const QString fieldName)
bool uninstallExtension(const QString &extensionName)
Uninstall extensionName It is only allowed if the extension is not loaded already....
QStringList checkInstallPrerequisites() const
Q_DECLARE_METATYPE(qSlicerExtensionsManagerModel::ServerAPI)