83 lines
2.7 KiB
Python
83 lines
2.7 KiB
Python
#!/usr/bin/python3
|
|
|
|
from PyQt6.QtCore import Qt, QTimer
|
|
from PyQt6.QtWidgets import QDockWidget, QFileDialog
|
|
|
|
from .ui.main_window import MainWindow
|
|
from .ui.popups import Popups
|
|
|
|
|
|
class GUI:
|
|
def __init__(self, app):
|
|
self.app = app
|
|
|
|
self.dropped = []
|
|
|
|
self.window = MainWindow(app, self)
|
|
self.settings = self.window.settings
|
|
self.track_control = self.window.track_control
|
|
self.process_dock = self.window.process_dock
|
|
self.track_info = self.window.track_info
|
|
|
|
self.popups = Popups(app, self)
|
|
|
|
self.window.setCentralWidget(self.app.library.main_library_widget)
|
|
|
|
if self.app.settings.window_maximized:
|
|
self.window.showMaximized()
|
|
|
|
elif self.app.settings.window_size is not None:
|
|
self.window.resize(*self.app.settings.window_size)
|
|
|
|
self.gui_update_timer = QTimer()
|
|
self.gui_update_timer.timeout.connect(self.update_gui)
|
|
self.gui_update_timer.start(1000 // self.app.settings.gui_update_rate)
|
|
|
|
self.window.closeEvent = self.on_exit
|
|
|
|
self.window.show()
|
|
|
|
self.settings.update_all()
|
|
|
|
def on_exit(self, event):
|
|
self.window.focusWidget().clearFocus() # clear focus on focused widget
|
|
|
|
self.app.player.stop()
|
|
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)
|
|
|
|
match key:
|
|
case "gui_update_rate":
|
|
self.gui_update_timer.setInterval(1000 // value)
|
|
|
|
case "album_cover_size":
|
|
self.track_info.set_size(value)
|
|
|
|
def on_track_change(self, previous_track, track):
|
|
self.track_control.on_track_change(previous_track, track)
|
|
|
|
for library_widget_id in self.app.player.current_playlist.views:
|
|
view = self.app.player.current_playlist.views[library_widget_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)
|
|
|
|
def on_playstate_update(self):
|
|
self.track_control.on_playstate_update()
|
|
self.track_info.update_info()
|
|
|
|
def update_gui(self):
|
|
self.track_control.track_progress_slider.update_progress()
|
|
if self.process_dock.isVisible():
|
|
self.process_dock.update_processes()
|