Addon Manager: Refactor progress reporting
This commit is contained in:
committed by
Yorik van Havre
parent
1cf2bacf1f
commit
30177e2cf2
@@ -39,7 +39,7 @@ from addonmanager_metadata import get_first_supported_freecad_version, Version
|
||||
from Widgets.addonmanager_widget_view_control_bar import WidgetViewControlBar, SortOptions
|
||||
from Widgets.addonmanager_widget_view_selector import AddonManagerDisplayStyle
|
||||
from Widgets.addonmanager_widget_filter_selector import StatusFilter, Filter
|
||||
from Widgets.addonmanager_widget_progress_bar import WidgetProgressBar
|
||||
from Widgets.addonmanager_widget_progress_bar import Progress, WidgetProgressBar
|
||||
from addonmanager_licenses import get_license_manager
|
||||
|
||||
translate = FreeCAD.Qt.translate
|
||||
@@ -50,9 +50,11 @@ translate = FreeCAD.Qt.translate
|
||||
|
||||
class PackageList(QtWidgets.QWidget):
|
||||
"""A widget that shows a list of packages and various widgets to control the
|
||||
display of the list"""
|
||||
display of the list, including a progress bar that can display and interrupt the load
|
||||
process."""
|
||||
|
||||
itemSelected = QtCore.Signal(Addon)
|
||||
stop_loading = QtCore.Signal()
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
@@ -70,6 +72,7 @@ class PackageList(QtWidgets.QWidget):
|
||||
self.ui.view_bar.sort_changed.connect(self.item_filter.setSortRole)
|
||||
self.ui.view_bar.sort_changed.connect(self.item_delegate.set_sort)
|
||||
self.ui.view_bar.sort_order_changed.connect(lambda order: self.item_filter.sort(0, order))
|
||||
self.ui.progress_bar.stop_clicked.connect(self.stop_loading)
|
||||
|
||||
# Set up the view the same as the last time:
|
||||
pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons")
|
||||
@@ -157,6 +160,19 @@ class PackageList(QtWidgets.QWidget):
|
||||
pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons")
|
||||
pref.SetInt("ViewStyle", style)
|
||||
|
||||
def set_loading(self, is_loading: bool) -> None:
|
||||
"""Set the loading status of this package list: when a package list is loading, it shows
|
||||
a progress bar. When it is no longer loading, the bar is hidden and the search bar gets
|
||||
the focus."""
|
||||
if is_loading:
|
||||
self.ui.progress_bar.show()
|
||||
else:
|
||||
self.ui.progress_bar.hide()
|
||||
self.ui.view_bar.search.setFocus()
|
||||
|
||||
def update_loading_progress(self, progress: Progress) -> None:
|
||||
self.ui.progress_bar.set_progress(progress)
|
||||
|
||||
|
||||
class PackageListItemModel(QtCore.QAbstractListModel):
|
||||
"""The model for use with the PackageList class."""
|
||||
@@ -764,7 +780,7 @@ class Ui_PackageList:
|
||||
|
||||
self.verticalLayout.addWidget(self.listPackages)
|
||||
|
||||
self.progressBar = WidgetProgressBar()
|
||||
self.verticalLayout.addWidget(self.progressBar)
|
||||
self.progress_bar = WidgetProgressBar()
|
||||
self.verticalLayout.addWidget(self.progress_bar)
|
||||
|
||||
QtCore.QMetaObject.connectSlotsByName(form)
|
||||
|
||||
Reference in New Issue
Block a user