diff --git a/wobuzz/gui.py b/wobuzz/gui.py index 5bf2dee..51d2036 100644 --- a/wobuzz/gui.py +++ b/wobuzz/gui.py @@ -1,10 +1,14 @@ #!/usr/bin/python3 -from PyQt6.QtCore import Qt +from PyQt6.QtCore import Qt, QTimer from PyQt6.QtWidgets import QDockWidget, QFileDialog from .ui.main_window import MainWindow +GUI_UPDATE_RATE = 20 +GUI_UPDATE_INTERVAL = 1000 // GUI_UPDATE_RATE + + class GUI: def __init__(self, app): self.app = app @@ -40,15 +44,16 @@ class GUI: self.playlist_file_selector.setNameFilters(["Playlists (*.wbz.m3u *.m3u)", "Any (*)"]) self.playlist_file_selector.setViewMode(QFileDialog.ViewMode.List) - self.connect() + self.gui_update_timer = QTimer() + self.gui_update_timer.timeout.connect(self.update_gui) + self.gui_update_timer.start(GUI_UPDATE_INTERVAL) + + self.window.closeEvent = self.on_exit self.window.show() self.settings.update_all() - def connect(self): - self.window.closeEvent = self.on_exit - def on_exit(self, event): self.app.library.on_exit(event) @@ -100,3 +105,8 @@ class GUI: if playlist_path is not None and not playlist_path == "": self.app.library.import_playlist(playlist_path) + def update_gui(self): + self.track_control.track_progress_slider.update_progress() + if self.process_dock.isVisible(): + self.process_dock.update_processes() + diff --git a/wobuzz/ui/process/process_dock.py b/wobuzz/ui/process/process_dock.py index becd170..e106c59 100644 --- a/wobuzz/ui/process/process_dock.py +++ b/wobuzz/ui/process/process_dock.py @@ -1,13 +1,10 @@ #!/usr/bin/python3 -from PyQt6.QtCore import QTimer, pyqtSignal +from PyQt6.QtCore import pyqtSignal from PyQt6.QtWidgets import QWidget, QDockWidget, QScrollArea, QVBoxLayout from .process import BackgroundProcess -PROGRESS_UPDATE_RATE = 10 -PROGRESS_UPDATE_INTERVAL = 1000 // PROGRESS_UPDATE_RATE - class ProcessDock(QDockWidget): # we need a signal for self.on_background_job_start() because PyQt6 doesn't allow some operations to be performed @@ -40,10 +37,6 @@ class ProcessDock(QDockWidget): self.setWidget(self.scroll_area) - self.progress_update_timer = QTimer() - self.progress_update_timer.timeout.connect(self.update_processes) - self.progress_update_timer.start(PROGRESS_UPDATE_INTERVAL) - self.job_started_signal.connect(self.on_background_job_start) self.job_finished_signal.connect(self.on_background_job_stop) diff --git a/wobuzz/ui/track_progress_slider.py b/wobuzz/ui/track_progress_slider.py index 91e7bb0..cf7a11b 100644 --- a/wobuzz/ui/track_progress_slider.py +++ b/wobuzz/ui/track_progress_slider.py @@ -1,12 +1,9 @@ #!/usr/bin/python3 -from PyQt6.QtCore import Qt, QTimer +from PyQt6.QtCore import Qt from PyQt6.QtGui import QMouseEvent from PyQt6.QtWidgets import QSlider, QStyle, QStyleOptionSlider -PROGRESS_UPDATE_RATE = 60 -PROGRESS_UPDATE_INTERVAL = 1000 // PROGRESS_UPDATE_RATE - class TrackProgressSlider(QSlider): def __init__(self, app, parent=None): @@ -17,10 +14,6 @@ class TrackProgressSlider(QSlider): self.dragged = False - self.progress_update_timer = QTimer() - self.progress_update_timer.timeout.connect(self.update_progress) - self.progress_update_timer.start(PROGRESS_UPDATE_INTERVAL) - option = QStyleOptionSlider() style = self.style()