From f3c59c11ba3671a9b32b518a89fa6248cb341658 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Sat, 18 Jan 2025 01:28:27 +0100 Subject: [PATCH] add progress in statusbar --- python/kontor/gui/main_window.py | 14 ++++++++++++-- python/kontor/gui/progress.py | 18 ++++++++++++++++++ python/kontor/main.py | 2 +- 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 python/kontor/gui/progress.py diff --git a/python/kontor/gui/main_window.py b/python/kontor/gui/main_window.py index a835b89..64c0d74 100644 --- a/python/kontor/gui/main_window.py +++ b/python/kontor/gui/main_window.py @@ -1,11 +1,12 @@ from typing import Any from PySide6.QtGui import QAction, QIcon -from PySide6.QtWidgets import QWidget, QVBoxLayout, QMenu, QMessageBox, QTabWidget, QTableView +from PySide6.QtWidgets import QWidget, QVBoxLayout, QMenu, QMessageBox, QTabWidget, QTableView, QProgressBar from PySide6.QtWidgets import QLabel, QMainWindow from cement.core.config import ConfigHandler from sqlalchemy import Engine +from .progress import ProgressUpdate from ..database import KontorDB from ..database.media import MediaFile from ..database.comic import Comic @@ -30,6 +31,8 @@ class MainWindow(QMainWindow): self._create_actions() self._create_menubar() self._create_toolbars() + self.status_progress = QProgressBar() + self.progress_update = ProgressUpdate(self.status_progress) self._create_statusbar() self.data = [] @@ -104,7 +107,8 @@ class MainWindow(QMainWindow): self.statusBar = self.statusBar() self.statusBar.showMessage("Kontor ready", 6000) self.status_label = QLabel("") - self.statusBar.addPermanentWidget(self.status_label) + self.status_progress.setEnabled(False) + self.statusBar.addPermanentWidget(self.status_progress) def about(self): QMessageBox.about(self.central_widget, "Über Kontor", f"Python: 3.11\nKontor: 0.1.0") @@ -130,12 +134,18 @@ class MainWindow(QMainWindow): def update_title(self): self.log.info("update title for table MediaFile") self.statusBar.showMessage("update title for table MediaFile", 3000) + self.status_progress.setEnabled(True) self.kontor_db.update_title() + self.status_progress.setEnabled(False) + self.refresh() def download_file(self): self.log.info("download videos for table MediaFile") self.statusBar.showMessage("download videos for table MediaFile", 3000) + self.status_progress.setEnabled(True) self.kontor_db.download_file() + self.status_progress.setEnabled(False) + self.refresh() def check_files(self): self.log.info("check files") diff --git a/python/kontor/gui/progress.py b/python/kontor/gui/progress.py new file mode 100644 index 0000000..1b44c26 --- /dev/null +++ b/python/kontor/gui/progress.py @@ -0,0 +1,18 @@ +from PySide6.QtWidgets import QProgressBar + + +class ProgressUpdate: + def __init__(self, progress: QProgressBar): + self.start = 0 + self.end = 0 + self.current = 0 + self.progress = progress + + def start(self, start_value, end_value): + self.start = start_value + self.end = end_value + self.current = start_value + self.progress.update() + + def update(self, current): + self.progress.update() diff --git a/python/kontor/main.py b/python/kontor/main.py index c0a3631..3375319 100644 --- a/python/kontor/main.py +++ b/python/kontor/main.py @@ -17,7 +17,7 @@ CONFIG['mariadb']['password'] = 'kontor' CONFIG['mariadb']['host'] = '127.0.0.1' CONFIG['mariadb']['port'] = '3306' CONFIG['mariadb']['database'] = 'kontor' -CONFIG['media']['ytdlp'] = '/home/tpeetz/bin/yt-dlp' +CONFIG['media']['yt-dlp'] = '/home/tpeetz/bin/yt-dlp' CONFIG['media']['dir'] = '/data/media' META = init_defaults('output.json', 'output.yaml') META['output.json']['overridable'] = True