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
|
||||
|
||||
from .menu_bar import MenuBar
|
||||
from .track_control import TrackControl
|
||||
from .settings import Settings
|
||||
|
||||
|
||||
class GUICommunication:
|
||||
|
@ -11,13 +13,15 @@ class GUICommunication:
|
|||
def __init__(self, app):
|
||||
self.app = app
|
||||
|
||||
self.menu_bar = MenuBar(self.app)
|
||||
self.track_control = TrackControl(self.app)
|
||||
self.settings = Settings(self.app)
|
||||
|
||||
self.connect()
|
||||
|
||||
def connect(self):
|
||||
pass
|
||||
self.settings.update_all()
|
||||
|
||||
def on_track_start(self):
|
||||
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):
|
||||
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.progress_update_timer = QTimer()
|
||||
|
|
|
@ -15,7 +15,10 @@ class Wobuzz:
|
|||
self.qt_app = QApplication([])
|
||||
|
||||
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.gui = GUI(self)
|
||||
self.gui_communication = GUICommunication(self)
|
||||
|
@ -25,6 +28,11 @@ class Wobuzz:
|
|||
if 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__":
|
||||
wobuzz = Wobuzz()
|
||||
|
|
|
@ -15,6 +15,11 @@ class LibraryDock(QDockWidget):
|
|||
Qt.DockWidgetArea.BottomDockWidgetArea
|
||||
)
|
||||
|
||||
self.setFeatures(
|
||||
QDockWidget.DockWidgetFeature.DockWidgetMovable |
|
||||
QDockWidget.DockWidgetFeature.DockWidgetFloatable
|
||||
)
|
||||
|
||||
self.library = Library(self)
|
||||
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
|
||||
|
||||
from PyQt6.QtCore import Qt
|
||||
from PyQt6.QtWidgets import QMainWindow, QMenu, QDockWidget
|
||||
from .main_container import MainContainer
|
||||
from PyQt6.QtWidgets import QMainWindow, QMenu
|
||||
from .track_control import TrackControl
|
||||
from .library_dock import LibraryDock
|
||||
from .settings.settings import Settings
|
||||
|
||||
|
||||
class MainWindow(QMainWindow):
|
||||
|
@ -13,16 +14,23 @@ class MainWindow(QMainWindow):
|
|||
self.setWindowTitle("WoBuzz")
|
||||
|
||||
self.menu_bar = self.menuBar()
|
||||
self.menu_bar.addMenu(QMenu("&File", self))
|
||||
|
||||
self.main_container = MainContainer(self)
|
||||
self.setCentralWidget(self.main_container)
|
||||
self.file_menu = QMenu("&File", self.menu_bar)
|
||||
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.setFeatures(
|
||||
QDockWidget.DockWidgetFeature.DockWidgetMovable |
|
||||
QDockWidget.DockWidgetFeature.DockWidgetFloatable
|
||||
)
|
||||
self.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, self.library_dock)
|
||||
self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, 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