From 368d9cae8923114662adb08ae1955137042f9a3c Mon Sep 17 00:00:00 2001 From: Dimitris Zlatanidis Date: Sat, 13 May 2023 20:50:38 +0300 Subject: [PATCH] Updated for progress bar --- slpkg/check_updates.py | 2 +- slpkg/multi_process.py | 2 +- slpkg/progress_bar.py | 53 +++++++++++++++++++++++++------------- slpkg/update_repository.py | 2 +- 4 files changed, 38 insertions(+), 21 deletions(-) diff --git a/slpkg/check_updates.py b/slpkg/check_updates.py index 8236b468..32e96cbf 100644 --- a/slpkg/check_updates.py +++ b/slpkg/check_updates.py @@ -143,7 +143,7 @@ class CheckUpdates(Configs): # Starting multiprocessing p1 = Process(target=self.check_for_updates) - p2 = Process(target=self.progress.bar, args=(message, '')) + p2 = Process(target=self.progress.progress_bar, args=(message, '')) p1.start() p2.start() diff --git a/slpkg/multi_process.py b/slpkg/multi_process.py index bdda510d..30505005 100644 --- a/slpkg/multi_process.py +++ b/slpkg/multi_process.py @@ -32,7 +32,7 @@ class MultiProcess(Configs): # Starting multiprocessing p1 = Process(target=self.utils.process, args=(command, self.stderr, self.stdout)) - p2 = Process(target=self.progress.bar, args=(f'{progress_message}:', filename)) + p2 = Process(target=self.progress.progress_bar, args=(f'{progress_message}:', filename)) p1.start() p2.start() diff --git a/slpkg/progress_bar.py b/slpkg/progress_bar.py index 102e73ec..f387371d 100644 --- a/slpkg/progress_bar.py +++ b/slpkg/progress_bar.py @@ -12,17 +12,41 @@ class ProgressBar(Configs): def __init__(self): super(Configs, self).__init__() + self.spinner = PixelSpinner + self.color: str = self.endc + self.spinners: dict = {} + self.spinners_color: dict = {} - def bar(self, message: str, filename: str) -> None: + def progress_bar(self, message: str, filename: str) -> None: """ Creating progress bar. """ - spinners: dict = { + self.assign_spinners() + self.assign_spinner_colors() + self.set_spinner() + self.set_color() + + if self.spinning_bar: + bar_spinner = self.spinner(f'{self.endc}{message} {filename} {self.color}') + # print('\033[F', end='', flush=True) + try: + while True: + time.sleep(0.1) + bar_spinner.next() + except KeyboardInterrupt: + raise SystemExit(1) + else: + print(f'{message} ', end='', flush=True) + + def assign_spinners(self): + self.spinners: dict = { 'pixel': PixelSpinner, 'line': LineSpinner, 'moon': MoonSpinner, 'pie': PieSpinner, 'spinner': Spinner } - colors: dict = { + + def assign_spinner_colors(self): + self.spinners_color: dict = { 'green': self.green, 'violet': self.violet, 'yellow': self.yellow, @@ -33,21 +57,14 @@ class ProgressBar(Configs): '': self.endc } + def set_spinner(self): try: - spinner = spinners[self.progress_spinner] - color: str = colors[self.spinner_color] + self.spinner = self.spinners[self.progress_spinner] except KeyError: - spinner = PixelSpinner - color: str = self.endc + self.spinner = PixelSpinner - if self.spinning_bar: - bar_spinner = spinner(f'{self.endc}{message} {filename} {color}') - # print('\033[F', end='', flush=True) - try: - while True: - time.sleep(0.1) - bar_spinner.next() - except KeyboardInterrupt: - raise SystemExit(1) - else: - print(f'{message} ', end='', flush=True) + def set_color(self): + try: + self.color: str = self.spinners_color[self.spinner_color] + except KeyError: + self.color: str = self.endc diff --git a/slpkg/update_repository.py b/slpkg/update_repository.py index b7892ad4..685cff89 100644 --- a/slpkg/update_repository.py +++ b/slpkg/update_repository.py @@ -616,7 +616,7 @@ class UpdateRepository(Configs): # Starting multiprocessing p1 = Process(target=self.check_for_updates, args=(queue,)) - p2 = Process(target=self.progress.bar, args=(message, '')) + p2 = Process(target=self.progress.progress_bar, args=(message, '')) p1.start() p2.start()