diff --git a/gui/gui.py b/gui/gui.py index 1ddffdc..b5ff269 100644 --- a/gui/gui.py +++ b/gui/gui.py @@ -78,7 +78,12 @@ class Ui_MainWindow(object): item.setIcon(icon8) self.menu.addItem(item) self.centralwidget_lay.addWidget(self.menu) - self.content = QtWidgets.QStackedWidget(self.centralwidget) + self.main_content_to_player_box = QtWidgets.QWidget(self.centralwidget) + self.main_content_to_player_box.setObjectName("main_content_to_player_box") + self.main_content_to_player_box_lay = QtWidgets.QVBoxLayout(self.main_content_to_player_box) + self.main_content_to_player_box_lay.setContentsMargins(0, 0, 0, 0) + self.main_content_to_player_box_lay.setObjectName("main_content_to_player_box_lay") + self.content = QtWidgets.QStackedWidget(self.main_content_to_player_box) self.content.setObjectName("content") self.pads_page = QtWidgets.QWidget() self.pads_page.setObjectName("pads_page") @@ -105,6 +110,7 @@ class Ui_MainWindow(object): self.pads_collection_2_tab = QtWidgets.QWidget() self.pads_collection_2_tab.setObjectName("pads_collection_2_tab") self.pads_collection_2_tab_lay = QtWidgets.QVBoxLayout(self.pads_collection_2_tab) + self.pads_collection_2_tab_lay.setContentsMargins(0, 0, 0, 0) self.pads_collection_2_tab_lay.setObjectName("pads_collection_2_tab_lay") self.pads_collection_2_widget = QtWidgets.QWidget(self.pads_collection_2_tab) self.pads_collection_2_widget.setMaximumSize(QtCore.QSize(16777215, 16777215)) @@ -115,8 +121,8 @@ class Ui_MainWindow(object): self.pads_content.addTab(self.pads_collection_2_tab, "") self.edit_pads_tab = QtWidgets.QWidget() self.edit_pads_tab.setObjectName("edit_pads_tab") - self.verticalLayout = QtWidgets.QVBoxLayout(self.edit_pads_tab) - self.verticalLayout.setObjectName("verticalLayout") + self.edit_pads_tab_lay = QtWidgets.QVBoxLayout(self.edit_pads_tab) + self.edit_pads_tab_lay.setObjectName("edit_pads_tab_lay") self.edit_collections_label = QtWidgets.QLabel(self.edit_pads_tab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) @@ -124,7 +130,7 @@ class Ui_MainWindow(object): sizePolicy.setHeightForWidth(self.edit_collections_label.sizePolicy().hasHeightForWidth()) self.edit_collections_label.setSizePolicy(sizePolicy) self.edit_collections_label.setObjectName("edit_collections_label") - self.verticalLayout.addWidget(self.edit_collections_label) + self.edit_pads_tab_lay.addWidget(self.edit_collections_label) self.edit_pads_collections_widget = QtWidgets.QWidget(self.edit_pads_tab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) @@ -132,9 +138,9 @@ class Ui_MainWindow(object): sizePolicy.setHeightForWidth(self.edit_pads_collections_widget.sizePolicy().hasHeightForWidth()) self.edit_pads_collections_widget.setSizePolicy(sizePolicy) self.edit_pads_collections_widget.setObjectName("edit_pads_collections_widget") - self.horizontalLayout = QtWidgets.QHBoxLayout(self.edit_pads_collections_widget) - self.horizontalLayout.setContentsMargins(0, 0, 0, 0) - self.horizontalLayout.setObjectName("horizontalLayout") + self.edit_pads_collections_widget_lay = QtWidgets.QHBoxLayout(self.edit_pads_collections_widget) + self.edit_pads_collections_widget_lay.setContentsMargins(0, 0, 0, 0) + self.edit_pads_collections_widget_lay.setObjectName("edit_pads_collections_widget_lay") self.edit_first_pads_collection_widget = QtWidgets.QWidget(self.edit_pads_collections_widget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) @@ -154,7 +160,7 @@ class Ui_MainWindow(object): self.edit_first_pads_collection_list.setDragEnabled(False) self.edit_first_pads_collection_list.setObjectName("edit_first_pads_collection_list") self.edit_first_pads_collection_lay.addWidget(self.edit_first_pads_collection_list) - self.horizontalLayout.addWidget(self.edit_first_pads_collection_widget) + self.edit_pads_collections_widget_lay.addWidget(self.edit_first_pads_collection_widget) self.edit_second_pads_collection_widget = QtWidgets.QWidget(self.edit_pads_collections_widget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) @@ -162,20 +168,20 @@ class Ui_MainWindow(object): sizePolicy.setHeightForWidth(self.edit_second_pads_collection_widget.sizePolicy().hasHeightForWidth()) self.edit_second_pads_collection_widget.setSizePolicy(sizePolicy) self.edit_second_pads_collection_widget.setObjectName("edit_second_pads_collection_widget") - self.edit_first_pads_collection_lay_2 = QtWidgets.QVBoxLayout(self.edit_second_pads_collection_widget) - self.edit_first_pads_collection_lay_2.setContentsMargins(0, 0, 0, 0) - self.edit_first_pads_collection_lay_2.setObjectName("edit_first_pads_collection_lay_2") + self.edit_second_pads_collection_lay = QtWidgets.QVBoxLayout(self.edit_second_pads_collection_widget) + self.edit_second_pads_collection_lay.setContentsMargins(0, 0, 0, 0) + self.edit_second_pads_collection_lay.setObjectName("edit_second_pads_collection_lay") self.edit_second_pads_collection_label = QtWidgets.QLabel(self.edit_second_pads_collection_widget) self.edit_second_pads_collection_label.setObjectName("edit_second_pads_collection_label") - self.edit_first_pads_collection_lay_2.addWidget(self.edit_second_pads_collection_label) + self.edit_second_pads_collection_lay.addWidget(self.edit_second_pads_collection_label) self.edit_second_pads_collection_list = QtWidgets.QListWidget(self.edit_second_pads_collection_widget) self.edit_second_pads_collection_list.setStyleSheet("font: 15pt \"Segoe UI\";") self.edit_second_pads_collection_list.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked|QtWidgets.QAbstractItemView.EditKeyPressed|QtWidgets.QAbstractItemView.SelectedClicked) self.edit_second_pads_collection_list.setDragEnabled(True) self.edit_second_pads_collection_list.setObjectName("edit_second_pads_collection_list") - self.edit_first_pads_collection_lay_2.addWidget(self.edit_second_pads_collection_list) - self.horizontalLayout.addWidget(self.edit_second_pads_collection_widget) - self.verticalLayout.addWidget(self.edit_pads_collections_widget) + self.edit_second_pads_collection_lay.addWidget(self.edit_second_pads_collection_list) + self.edit_pads_collections_widget_lay.addWidget(self.edit_second_pads_collection_widget) + self.edit_pads_tab_lay.addWidget(self.edit_pads_collections_widget) self.pads_content.addTab(self.edit_pads_tab, "") self.pads_page_lay.addWidget(self.pads_content) self.content.addWidget(self.pads_page) @@ -197,7 +203,8 @@ class Ui_MainWindow(object): self.settings_page = QtWidgets.QWidget() self.settings_page.setObjectName("settings_page") self.content.addWidget(self.settings_page) - self.centralwidget_lay.addWidget(self.content) + self.main_content_to_player_box_lay.addWidget(self.content) + self.centralwidget_lay.addWidget(self.main_content_to_player_box) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) diff --git a/gui/gui.ui b/gui/gui.ui index 5fd7132..f73c471 100644 --- a/gui/gui.ui +++ b/gui/gui.ui @@ -430,110 +430,61 @@ QListWidget:item:selected { - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - QTabWidget::North - - - QTabWidget::Rounded - - - 0 - - - true - - - - - 16777215 - 16777215 - + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + 0 - - Pads collection 1 - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - - - Pads collection 2 - - - - + + 0 + + + 0 + + + 0 + + + + + QTabWidget::North + + + QTabWidget::Rounded + + + 0 + + + true + + 16777215 16777215 - - - - - - - - Edit pads - - - - - - - 0 - 0 - - - - Double click row to add path to file - - - - - - - - 0 - 0 - - - + + Pads collection 1 + + 0 @@ -547,58 +498,69 @@ QListWidget:item:selected { 0 - + + + + + + + + + Pads collection 2 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 16777215 + 16777215 + + + + + + + + + + Edit pads + + + + - + 0 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Pads collection 1 - - - - - - - font: 15pt "Segoe UI"; - - - QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked - - - false - - - - + + Double click row to add path to file + - + - + 0 0 - + 0 @@ -612,23 +574,91 @@ QListWidget:item:selected { 0 - - - Pads collection 2 + + + + 0 + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Pads collection 1 + + + + + + + font: 15pt "Segoe UI"; + + + QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked + + + false + + + + - - - font: 15pt "Segoe UI"; - - - QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked - - - true + + + + 0 + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Pads collection 2 + + + + + + + font: 15pt "Segoe UI"; + + + QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked + + + true + + + + @@ -636,19 +666,19 @@ QListWidget:item:selected { - - - + + + - - - - - - - - - + + + + + + + + + diff --git a/gui/modules/pads/fill_pads_from_settings.py b/gui/modules/pads/fill_pads_from_settings.py index fd730ef..84ef549 100644 --- a/gui/modules/pads/fill_pads_from_settings.py +++ b/gui/modules/pads/fill_pads_from_settings.py @@ -1,4 +1,5 @@ import os +from modules.padslist import Pads from gui.gui import Ui_MainWindow from PyQt5 import QtWidgets, QtCore from PyQt5.QtWidgets import QMainWindow @@ -22,12 +23,24 @@ def fill_pads(ui: Ui_MainWindow, MainWindow: QMainWindow): button.setText(os.path.split(item)[-1] if os.path.exists(item) else "File doesn't exist") button.clicked.connect(lambda: print(ui.first_pads_dict[MainWindow.sender().text()] if MainWindow.sender().text() != "File doesn't exist" else None)) - print(ui.first_pads_dict) + print('First: ', ui.first_pads_dict) + Pads.update("first_pads", ui.first_pads_dict) ui.pads_collection_1_lay.addWidget(button, i // 4, i % 4) - for i in range(16): - item = QtWidgets.QListWidgetItem() - item.setFlags( - QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled - ) - ui.edit_second_pads_collection_list.addItem(item) + second_pads_list = \ + [ui.edit_second_pads_collection_list.item(x).text() for x in range(ui.edit_second_pads_collection_list.count())] + + for i in range(len(second_pads_list)): + item = second_pads_list[i] + if item == '': + continue + ui.second_pads_dict[os.path.split(item)[-1]] = item + button = QtWidgets.QPushButton() + button.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, + QtWidgets.QSizePolicy.Expanding)) + button.setText(os.path.split(item)[-1] if os.path.exists(item) else "File doesn't exist") + button.clicked.connect(lambda: print(ui.second_pads_dict[MainWindow.sender().text()] + if MainWindow.sender().text() != "File doesn't exist" else None)) + print('Second', ui.second_pads_dict) + Pads.update("second_pads", ui.second_pads_dict) + ui.pads_collection_2_lay.addWidget(button, i // 4, i % 4) diff --git a/gui/modules/pads/handlers.py b/gui/modules/pads/handlers.py index f6ece1f..453235d 100644 --- a/gui/modules/pads/handlers.py +++ b/gui/modules/pads/handlers.py @@ -14,3 +14,4 @@ def register_handlers(ui: Ui_MainWindow, MainWindow: QMainWindow): fill_settings(ui) fill_pads(ui, MainWindow) ui.edit_first_pads_collection_list.itemChanged.connect(lambda: fill_pads(ui, MainWindow)) + ui.edit_second_pads_collection_list.itemChanged.connect(lambda: fill_pads(ui, MainWindow)) diff --git a/gui/modules/pads/initialize_pads_settings.py b/gui/modules/pads/initialize_pads_settings.py index 47321bd..05915ca 100644 --- a/gui/modules/pads/initialize_pads_settings.py +++ b/gui/modules/pads/initialize_pads_settings.py @@ -1,3 +1,4 @@ +from modules.padslist import Pads from gui.gui import Ui_MainWindow from PyQt5 import QtWidgets, QtCore @@ -8,6 +9,7 @@ def fill_settings(ui: Ui_MainWindow): item.setFlags( QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled ) + item.setText(Pads.get().first_pads[list(Pads.get().first_pads)[i]] if i < len(Pads.get().first_pads) else "") ui.edit_first_pads_collection_list.addItem(item) for i in range(16): @@ -15,4 +17,5 @@ def fill_settings(ui: Ui_MainWindow): item.setFlags( QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled ) + item.setText(Pads.get().second_pads[list(Pads.get().second_pads)[i]] if i < len(Pads.get().second_pads) else "") ui.edit_second_pads_collection_list.addItem(item) diff --git a/modules/padslist/__init__.py b/modules/padslist/__init__.py new file mode 100644 index 0000000..c6cd83a --- /dev/null +++ b/modules/padslist/__init__.py @@ -0,0 +1 @@ +from .padslist import Pads diff --git a/modules/padslist/model.py b/modules/padslist/model.py new file mode 100644 index 0000000..83b1c80 --- /dev/null +++ b/modules/padslist/model.py @@ -0,0 +1,10 @@ +from dataclasses import dataclass +from dataclasses_json import dataclass_json +from typing import Dict + + +@dataclass_json +@dataclass(frozen=True) +class PadsModel: + first_pads: Dict[str, str] + second_pads: Dict[str, str] diff --git a/modules/padslist/padslist.py b/modules/padslist/padslist.py new file mode 100644 index 0000000..52d2906 --- /dev/null +++ b/modules/padslist/padslist.py @@ -0,0 +1,43 @@ +from modules.padslist.model import PadsModel +import json +import os + + +class Pads: + @staticmethod + def default(): + return { + "first_pads": dict(), + "second_pads": dict() + } + + @staticmethod + def fix() -> None: + try: + with open("data/config.pads", "w") as file: + json.dump(Pads.default(), file) + except FileNotFoundError: + if not os.path.exists('data'): + os.mkdir('data') + Pads.fix() + + @staticmethod + def get() -> PadsModel: + try: + with open("data/config.pads", "r") as file: + return PadsModel.from_dict(json.load(file)) + except: + Pads.fix() + return Pads.get() + + @staticmethod + def update(key: str, value: str | None) -> dict: + with open("data/config.pads", "r") as file: + settings = json.load(file) + + settings[key] = value + + with open("data/config.pads", "w") as file: + json.dump(settings, file) + + return settings