diff --git a/CHANGELOG.md b/CHANGELOG.md index aa0097a5..55f2e6d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,7 +51,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Snap - full support refactored to use the Snapd socket instead of the Ubuntu's old Snap API (which was recently disabled). Now the 'read' operations are faster, a only the icon is cached to the disk. -- minor UI improvements +- UI + - faster initialization dialog: improved the way it checks for finished tasks + - minor improvements ### Fixes - AppImage diff --git a/bauh/view/qt/prepare.py b/bauh/view/qt/prepare.py index e8d8d0c3..f662f81b 100644 --- a/bauh/view/qt/prepare.py +++ b/bauh/view/qt/prepare.py @@ -24,7 +24,7 @@ class Prepare(QThread, TaskManager): signal_register = pyqtSignal(str, str, object) signal_update = pyqtSignal(str, float, str) signal_finished = pyqtSignal(str) - signal_started = pyqtSignal() + signal_started = pyqtSignal(int) signal_ask_password = pyqtSignal() signal_output = pyqtSignal(str, str) @@ -35,6 +35,7 @@ class Prepare(QThread, TaskManager): self.context = context self.waiting_password = False self.password_response = None + self._registered = 0 def ask_password(self) -> Tuple[str, bool]: self.waiting_password = True @@ -58,7 +59,7 @@ class Prepare(QThread, TaskManager): QCoreApplication.exit(1) self.manager.prepare(self, root_pwd, None) - self.signal_started.emit() + self.signal_started.emit(self._registered) def update_progress(self, task_id: str, progress: float, substatus: str): self.signal_update.emit(task_id, progress, substatus) @@ -67,6 +68,7 @@ class Prepare(QThread, TaskManager): self.signal_output.emit(task_id, output) def register_task(self, id_: str, label: str, icon_path: str): + self._registered += 1 self.signal_register.emit(id_, label, icon_path) def finish_task(self, task_id: str): @@ -78,23 +80,19 @@ class CheckFinished(QThread): def __init__(self): super(CheckFinished, self).__init__() - self.total = None - self.finished = None + self.total = 0 + self.finished = 0 def run(self): - self.sleep(3) while True: if self.total == self.finished: break - self.msleep(10) + self.msleep(5) self.signal_finished.emit() - def update(self, total: int, finished: int): - if total is not None: - self.total = total - + def update(self, finished: int): if finished is not None: self.finished = finished @@ -116,7 +114,7 @@ class EnableSkip(QThread): class PreparePanel(QWidget, TaskManager): - signal_status = pyqtSignal(object, object) + signal_status = pyqtSignal(int) signal_password_response = pyqtSignal(str, bool) def __init__(self, context: ApplicationContext, manager: SoftwareManager, screen_size: QSize, i18n: I18n, manage_window: QWidget): @@ -133,7 +131,7 @@ class PreparePanel(QWidget, TaskManager): self.manager = manager self.tasks = {} self.output = {} - self.ntasks = 0 + self.added_tasks = 0 self.ftasks = 0 self.self_close = False @@ -259,23 +257,24 @@ class PreparePanel(QWidget, TaskManager): self.prepare_thread.start() centralize(self) - def start(self): - self.ref_bt_close.setVisible(True) + def start(self, tasks: int): + self.check_thread.total = tasks self.check_thread.start() self.skip_thread.start() - self.ref_progress_bar.setVisible(True) self.progress_thread.start() + self.ref_bt_close.setVisible(True) + self.ref_progress_bar.setVisible(True) + def closeEvent(self, QCloseEvent): if not self.self_close: QCoreApplication.exit() def register_task(self, id_: str, label: str, icon_path: str): - self.ntasks += 1 - self.table.setRowCount(self.ntasks) - - task_row = self.ntasks - 1 + self.added_tasks += 1 + self.table.setRowCount(self.added_tasks) + task_row = self.added_tasks - 1 icon_widget = QWidget() icon_widget.setLayout(QHBoxLayout()) @@ -342,8 +341,6 @@ class PreparePanel(QWidget, TaskManager): 'lb_sub': lb_sub, 'finished': False} - self.signal_status.emit(self.ntasks, self.ftasks) - def update_progress(self, task_id: str, progress: float, substatus: str): task = self.tasks[task_id] @@ -385,9 +382,9 @@ class PreparePanel(QWidget, TaskManager): self._resize_columns() self.ftasks += 1 - self.signal_status.emit(self.ntasks, self.ftasks) + self.signal_status.emit(self.ftasks) - if self.ntasks == self.ftasks: + if self.table.rowCount() == self.ftasks: self.label_top.setText(self.i18n['ready'].capitalize()) def finish(self):