ENH: Add Restore Tab to the extension manager widget
Created by: jcfr
This commit improves the extension manager so that it can keep track of the installed extensions across version. The goal is to simplify the number of steps allowing people to reinstall extensions that were used in a previous installation.
(1) After installing a new version of Slicer, the user can select from all previously installed extensions and batch-install them. (2) Extensions installed in the last (previous) Slicer versions are marked and preselected (one click-solution for getting the previous setup) (3) Extensions that where previously installed but are not compatible for some reason, are shown but not selectable (4) UI: a third tab ("Restore Extensions") is added to the Extension Manager and provide at least a list view for selection / a button button for installing the selected extensions.
More specifically, this topic implements the following changes:
- add setter/getter for extension history settings file path
- set path to Slicer.ini as extension model extension history path
- add function to write extension id to settings file after installation
- installed (and scheduled for removal) extensions are reflected in ini file
- add check functionality for previous extensions
- add headless mode to restore widget for initial extension restore
- add messagebox to advice restart after extension restore
- extension check on startup coupled with settings
- user-visible strings are translatable
References:
- https://www.slicer.org/wiki/Documentation/Labs/AutomaticUpdateAndInstallationFramework
- https://github.com/Slicer/Slicer/pull/632
- https://github.com/Slicer/Slicer/pull/865
- https://github.com/Slicer/Slicer/pull/698
Co-authored-by: Hans Meine hans_meine@gmx.net
Reviewed-by: Andras Lasso lasso@queensu.ca Reviewed-by: Jean-Christophe Fillion-Robin jchris.fillionr@kitware.com Reviewed-by: Steve Pieper pieper@bwh.harvard.edu