diff --git a/src/Mod/AddonManager/AddonManager.py b/src/Mod/AddonManager/AddonManager.py index 97e635fe51..6b58a01244 100644 --- a/src/Mod/AddonManager/AddonManager.py +++ b/src/Mod/AddonManager/AddonManager.py @@ -105,7 +105,7 @@ are downloaded instead. INSTANCE = None -class CommandAddonManager: +class CommandAddonManager(QtCore.QObject): """The main Addon Manager class and FreeCAD command""" workers = [ @@ -125,7 +125,11 @@ class CommandAddonManager: lock = threading.Lock() restart_required = False + finished = QtCore.Signal() + def __init__(self): + super().__init__() + QT_TRANSLATE_NOOP("QObject", "Addon Manager") FreeCADGui.addPreferencePage( AddonManagerOptions, @@ -228,6 +232,7 @@ class CommandAddonManager: # connect slots self.dialog.rejected.connect(self.reject) + self.dialog.accepted.connect(self.accept) self.button_bar.update_all_addons.clicked.connect(self.update_all) self.button_bar.close.clicked.connect(self.dialog.reject) self.button_bar.refresh_local_cache.clicked.connect(self.on_buttonUpdateCache_clicked) @@ -285,6 +290,9 @@ class CommandAddonManager: + "\n" ) + def accept(self) -> None: + self.finished.emit() + def reject(self) -> None: """called when the window has been closed""" @@ -356,6 +364,8 @@ class CommandAddonManager: # restart FreeCAD after a delay to give time to this dialog to close QtCore.QTimer.singleShot(1000, utils.restart_freecad) + self.finished.emit() + def startup(self) -> None: """Downloads the available packages listings and populates the table diff --git a/src/Mod/AddonManager/package_list.py b/src/Mod/AddonManager/package_list.py index c7a2787aab..f7bbaef3cf 100644 --- a/src/Mod/AddonManager/package_list.py +++ b/src/Mod/AddonManager/package_list.py @@ -75,8 +75,11 @@ class PackageList(QtWidgets.QWidget): pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons") package_type = pref.GetInt("PackageTypeSelection", 1) status = pref.GetInt("StatusSelection", 0) + search_string = pref.GetString("SearchString", "") self.ui.view_bar.filter_selector.set_contents_filter(package_type) self.ui.view_bar.filter_selector.set_status_filter(status) + if search_string: + self.ui.view_bar.search.filter_line_edit.setText(search_string) self.item_filter.setPackageFilter(package_type) self.item_filter.setStatusFilter(status)