Wobuzz/wobuzz/gui.py
The Wobbler f2f3937fb2 Fixed a bug where the process widget of the playlist loading thread wouldn't get deleted if the playlist was too short.
The bug occurred because the creation of the widget was done through a PyQt-Signal but the deletion occurred in the same thread as the background process.
2025-02-20 19:17:44 +01:00

64 lines
2 KiB
Python

#!/usr/bin/python3
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QDockWidget
from .ui.main_window import MainWindow
class GUI:
def __init__(self, app):
self.app = app
self.dropped = []
self.window = MainWindow(app)
self.settings = self.window.settings
self.track_control = self.window.track_control
self.process_dock = self.window.process_dock
self.window.addDockWidget(Qt.DockWidgetArea.LeftDockWidgetArea, self.app.library.main_library_dock)
self.app.library.main_library_dock.setFeatures(
QDockWidget.DockWidgetFeature.DockWidgetMovable |
QDockWidget.DockWidgetFeature.DockWidgetFloatable
)
if self.app.settings.window_maximized:
self.window.showMaximized()
elif not self.app.settings.window_size is None:
self.window.resize(*self.app.settings.window_size)
self.connect()
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)
self.app.settings.window_size = (self.window.width(), self.window.height())
self.app.settings.window_maximized = self.window.isMaximized()
self.app.settings.save(self.app.utils.settings_location)
def on_settings_change(self, key, value):
self.settings.update_settings(key, value)
def on_track_change(self, previous_track, track):
self.track_control.on_track_change(previous_track, track)
for dock_id in self.app.player.current_playlist.views:
view = self.app.player.current_playlist.views[dock_id]
view.on_track_change(previous_track, track)
def on_background_job_start(self, job_name: str, description: str, steps: int=0, getter: any=None):
self.process_dock.job_started_signal.emit(job_name, description, steps, getter)
def on_background_job_stop(self, job_name: str):
self.process_dock.job_finished_signal.emit(job_name)