Added "library_path" setting, added a gui for the settings, changed the window layout and did a bunch of other things.
This commit is contained in:
parent
259ec72442
commit
6498f43d5f
10 changed files with 124 additions and 37 deletions
|
@ -1,6 +1,8 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
from .menu_bar import MenuBar
|
||||||
from .track_control import TrackControl
|
from .track_control import TrackControl
|
||||||
|
from .settings import Settings
|
||||||
|
|
||||||
|
|
||||||
class GUICommunication:
|
class GUICommunication:
|
||||||
|
@ -11,13 +13,15 @@ class GUICommunication:
|
||||||
def __init__(self, app):
|
def __init__(self, app):
|
||||||
self.app = app
|
self.app = app
|
||||||
|
|
||||||
|
self.menu_bar = MenuBar(self.app)
|
||||||
self.track_control = TrackControl(self.app)
|
self.track_control = TrackControl(self.app)
|
||||||
|
self.settings = Settings(self.app)
|
||||||
|
|
||||||
self.connect()
|
self.settings.update_all()
|
||||||
|
|
||||||
def connect(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def on_track_start(self):
|
def on_track_start(self):
|
||||||
self.track_control.on_track_start()
|
self.track_control.on_track_start()
|
||||||
|
|
||||||
|
def on_settings_change(self, key, value):
|
||||||
|
self.settings.update_settings(key, value)
|
||||||
|
|
||||||
|
|
17
wobuzz/gui_communication/menu_bar.py
Normal file
17
wobuzz/gui_communication/menu_bar.py
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
|
||||||
|
class MenuBar:
|
||||||
|
def __init__(self, app):
|
||||||
|
self.app = app
|
||||||
|
self.window = self.app.gui.window
|
||||||
|
self.settings_action = self.window.settings_action
|
||||||
|
|
||||||
|
self.connect()
|
||||||
|
|
||||||
|
def connect(self):
|
||||||
|
self.settings_action.triggered.connect(self.show_settings)
|
||||||
|
|
||||||
|
def show_settings(self):
|
||||||
|
self.window.settings.show()
|
||||||
|
|
25
wobuzz/gui_communication/settings.py
Normal file
25
wobuzz/gui_communication/settings.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
|
||||||
|
class Settings:
|
||||||
|
def __init__(self, app):
|
||||||
|
self.app = app
|
||||||
|
|
||||||
|
self.settings = self.app.gui.window.settings
|
||||||
|
|
||||||
|
self.connect()
|
||||||
|
|
||||||
|
def connect(self):
|
||||||
|
self.settings.file_settings.library_path_input.returnPressed.connect(self.write_settings)
|
||||||
|
|
||||||
|
def update_all(self):
|
||||||
|
self.settings.file_settings.library_path_input.setText(self.app.settings.library_path)
|
||||||
|
|
||||||
|
def update_settings(self, key, value):
|
||||||
|
match key:
|
||||||
|
case "library_path":
|
||||||
|
self.settings.file_settings.library_path_input.setText(value)
|
||||||
|
|
||||||
|
def write_settings(self):
|
||||||
|
self.app.settings.library_path = self.settings.file_settings.library_path_input.text()
|
||||||
|
|
|
@ -13,7 +13,7 @@ class TrackControl:
|
||||||
|
|
||||||
def __init__(self, app):
|
def __init__(self, app):
|
||||||
self.app = app
|
self.app = app
|
||||||
self.track_control = self.app.gui.window.main_container.track_control
|
self.track_control = self.app.gui.window.track_control
|
||||||
self.track_progress_slider = self.track_control.track_progress_slider
|
self.track_progress_slider = self.track_control.track_progress_slider
|
||||||
|
|
||||||
self.progress_update_timer = QTimer()
|
self.progress_update_timer = QTimer()
|
||||||
|
|
|
@ -15,7 +15,10 @@ class Wobuzz:
|
||||||
self.qt_app = QApplication([])
|
self.qt_app = QApplication([])
|
||||||
|
|
||||||
self.utils = Utils(self)
|
self.utils = Utils(self)
|
||||||
self.settings = load_dataclass_json(Settings, self.utils.settings_location)
|
|
||||||
|
self.settings = load_dataclass_json(Settings, self.utils.settings_location, self, True, True)
|
||||||
|
self.settings.set_attribute_change_event(self.on_settings_change)
|
||||||
|
|
||||||
self.player = Player(self)
|
self.player = Player(self)
|
||||||
self.gui = GUI(self)
|
self.gui = GUI(self)
|
||||||
self.gui_communication = GUICommunication(self)
|
self.gui_communication = GUICommunication(self)
|
||||||
|
@ -25,6 +28,11 @@ class Wobuzz:
|
||||||
if track_paths:
|
if track_paths:
|
||||||
self.player.load_tracks_from_paths(track_paths)
|
self.player.load_tracks_from_paths(track_paths)
|
||||||
|
|
||||||
|
def on_settings_change(self, key, value):
|
||||||
|
self.gui_communication.on_settings_change(key, value)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
wobuzz = Wobuzz()
|
wobuzz = Wobuzz()
|
||||||
|
|
|
@ -15,6 +15,11 @@ class LibraryDock(QDockWidget):
|
||||||
Qt.DockWidgetArea.BottomDockWidgetArea
|
Qt.DockWidgetArea.BottomDockWidgetArea
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.setFeatures(
|
||||||
|
QDockWidget.DockWidgetFeature.DockWidgetMovable |
|
||||||
|
QDockWidget.DockWidgetFeature.DockWidgetFloatable
|
||||||
|
)
|
||||||
|
|
||||||
self.library = Library(self)
|
self.library = Library(self)
|
||||||
self.setWidget(self.library)
|
self.setWidget(self.library)
|
||||||
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
from PyQt6.QtWidgets import QWidget, QGridLayout, QSizePolicy
|
|
||||||
from .track_control import TrackControl
|
|
||||||
from .lines import HLine
|
|
||||||
|
|
||||||
|
|
||||||
class MainContainer(QWidget):
|
|
||||||
def __init__(self, parent=None):
|
|
||||||
super().__init__(parent)
|
|
||||||
|
|
||||||
self.layout = QGridLayout()
|
|
||||||
self.setLayout(self.layout)
|
|
||||||
|
|
||||||
self.track_control = TrackControl(self)
|
|
||||||
self.layout.addWidget(self.track_control)
|
|
||||||
|
|
||||||
self.layout.addWidget(HLine(self)) # track_control separator line
|
|
||||||
|
|
||||||
self.setSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
from PyQt6.QtCore import Qt
|
from PyQt6.QtCore import Qt
|
||||||
from PyQt6.QtWidgets import QMainWindow, QMenu, QDockWidget
|
from PyQt6.QtWidgets import QMainWindow, QMenu
|
||||||
from .main_container import MainContainer
|
from .track_control import TrackControl
|
||||||
from .library_dock import LibraryDock
|
from .library_dock import LibraryDock
|
||||||
|
from .settings.settings import Settings
|
||||||
|
|
||||||
|
|
||||||
class MainWindow(QMainWindow):
|
class MainWindow(QMainWindow):
|
||||||
|
@ -13,16 +14,23 @@ class MainWindow(QMainWindow):
|
||||||
self.setWindowTitle("WoBuzz")
|
self.setWindowTitle("WoBuzz")
|
||||||
|
|
||||||
self.menu_bar = self.menuBar()
|
self.menu_bar = self.menuBar()
|
||||||
self.menu_bar.addMenu(QMenu("&File", self))
|
|
||||||
|
|
||||||
self.main_container = MainContainer(self)
|
self.file_menu = QMenu("&File", self.menu_bar)
|
||||||
self.setCentralWidget(self.main_container)
|
self.menu_bar.addMenu(self.file_menu)
|
||||||
|
|
||||||
|
self.edit_menu = QMenu("&Edit", self.menu_bar)
|
||||||
|
self.menu_bar.addMenu(self.edit_menu)
|
||||||
|
|
||||||
|
self.settings_action = self.edit_menu.addAction("Settings")
|
||||||
|
|
||||||
|
self.track_control = TrackControl()
|
||||||
|
self.addToolBar(self.track_control)
|
||||||
|
|
||||||
|
self.settings = Settings()
|
||||||
|
self.settings.hide()
|
||||||
|
self.addDockWidget(Qt.DockWidgetArea.LeftDockWidgetArea, self.settings)
|
||||||
|
|
||||||
self.library_dock = LibraryDock()
|
self.library_dock = LibraryDock()
|
||||||
self.library_dock.setFeatures(
|
self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.library_dock)
|
||||||
QDockWidget.DockWidgetFeature.DockWidgetMovable |
|
|
||||||
QDockWidget.DockWidgetFeature.DockWidgetFloatable
|
|
||||||
)
|
|
||||||
self.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, self.library_dock)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
15
wobuzz/ui/settings/file.py
Normal file
15
wobuzz/ui/settings/file.py
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
from PyQt6.QtWidgets import QWidget, QLineEdit, QFormLayout
|
||||||
|
|
||||||
|
|
||||||
|
class FileSettings(QWidget):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
self.layout = QFormLayout(self)
|
||||||
|
self.setLayout(self.layout)
|
||||||
|
|
||||||
|
self.library_path_input = QLineEdit(self)
|
||||||
|
self.layout.addRow("Library Path:", self.library_path_input)
|
||||||
|
|
26
wobuzz/ui/settings/settings.py
Normal file
26
wobuzz/ui/settings/settings.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
from PyQt6.QtCore import Qt
|
||||||
|
from PyQt6.QtWidgets import QDockWidget, QTabWidget
|
||||||
|
from .file import FileSettings
|
||||||
|
|
||||||
|
|
||||||
|
class Settings(QDockWidget):
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super().__init__(parent)
|
||||||
|
|
||||||
|
self.setAllowedAreas(
|
||||||
|
Qt.DockWidgetArea.LeftDockWidgetArea |
|
||||||
|
Qt.DockWidgetArea.RightDockWidgetArea |
|
||||||
|
Qt.DockWidgetArea.BottomDockWidgetArea
|
||||||
|
)
|
||||||
|
|
||||||
|
self.setWindowTitle("Settings")
|
||||||
|
|
||||||
|
self.tabs = QTabWidget()
|
||||||
|
|
||||||
|
self.file_settings = FileSettings()
|
||||||
|
self.tabs.addTab(self.file_settings, "Files")
|
||||||
|
|
||||||
|
self.setWidget(self.tabs)
|
||||||
|
|
Loading…
Add table
Reference in a new issue