Added saving and filling buttons from file.

TODO: Fix too long names and add functionality that removes buttons that are removed from list
This commit is contained in:
BarsTiger
2022-11-13 23:17:48 +02:00
parent 7fdea66d03
commit 4213b7333d
8 changed files with 291 additions and 183 deletions

View File

@@ -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)

View File

@@ -430,110 +430,61 @@ QListWidget:item:selected {
</widget>
</item>
<item>
<widget class="QStackedWidget" name="content">
<widget class="QWidget" name="pads_page">
<layout class="QVBoxLayout" name="pads_page_lay">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTabWidget" name="pads_content">
<property name="tabPosition">
<enum>QTabWidget::North</enum>
</property>
<property name="tabShape">
<enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<property name="movable">
<bool>true</bool>
</property>
<widget class="QWidget" name="pads_collection_1_tab">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
<widget class="QWidget" name="main_content_to_player_box" native="true">
<layout class="QVBoxLayout" name="main_content_to_player_box_lay">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QStackedWidget" name="content">
<widget class="QWidget" name="pads_page">
<layout class="QVBoxLayout" name="pads_page_lay">
<property name="leftMargin">
<number>0</number>
</property>
<attribute name="title">
<string>Pads collection 1</string>
</attribute>
<layout class="QVBoxLayout" name="pads_page_1_tab_lay">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="pads_collection_1_widget" native="true">
<layout class="QGridLayout" name="pads_collection_1_lay"/>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="pads_collection_2_tab">
<attribute name="title">
<string>Pads collection 2</string>
</attribute>
<layout class="QVBoxLayout" name="pads_collection_2_tab_lay">
<item>
<widget class="QWidget" name="pads_collection_2_widget" native="true">
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTabWidget" name="pads_content">
<property name="tabPosition">
<enum>QTabWidget::North</enum>
</property>
<property name="tabShape">
<enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<property name="movable">
<bool>true</bool>
</property>
<widget class="QWidget" name="pads_collection_1_tab">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<layout class="QGridLayout" name="pads_collection_2_lay"/>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="edit_pads_tab">
<attribute name="title">
<string>Edit pads</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="edit_collections_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Double click row to add path to file</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="edit_pads_collections_widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<attribute name="title">
<string>Pads collection 1</string>
</attribute>
<layout class="QVBoxLayout" name="pads_page_1_tab_lay">
<property name="leftMargin">
<number>0</number>
</property>
@@ -547,58 +498,69 @@ QListWidget:item:selected {
<number>0</number>
</property>
<item>
<widget class="QWidget" name="edit_first_pads_collection_widget" native="true">
<widget class="QWidget" name="pads_collection_1_widget" native="true">
<layout class="QGridLayout" name="pads_collection_1_lay"/>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="pads_collection_2_tab">
<attribute name="title">
<string>Pads collection 2</string>
</attribute>
<layout class="QVBoxLayout" name="pads_collection_2_tab_lay">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="pads_collection_2_widget" native="true">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<layout class="QGridLayout" name="pads_collection_2_lay"/>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="edit_pads_tab">
<attribute name="title">
<string>Edit pads</string>
</attribute>
<layout class="QVBoxLayout" name="edit_pads_tab_lay">
<item>
<widget class="QLabel" name="edit_collections_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="edit_first_pads_collection_lay">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="edit_first_pads_collection_label">
<property name="text">
<string>Pads collection 1</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="edit_first_pads_collection_list">
<property name="styleSheet">
<string notr="true">font: 15pt &quot;Segoe UI&quot;;</string>
</property>
<property name="editTriggers">
<set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
</property>
<property name="dragEnabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
<property name="text">
<string>Double click row to add path to file</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="edit_second_pads_collection_widget" native="true">
<widget class="QWidget" name="edit_pads_collections_widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="edit_first_pads_collection_lay_2">
<layout class="QHBoxLayout" name="edit_pads_collections_widget_lay">
<property name="leftMargin">
<number>0</number>
</property>
@@ -612,23 +574,91 @@ QListWidget:item:selected {
<number>0</number>
</property>
<item>
<widget class="QLabel" name="edit_second_pads_collection_label">
<property name="text">
<string>Pads collection 2</string>
<widget class="QWidget" name="edit_first_pads_collection_widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="edit_first_pads_collection_lay">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="edit_first_pads_collection_label">
<property name="text">
<string>Pads collection 1</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="edit_first_pads_collection_list">
<property name="styleSheet">
<string notr="true">font: 15pt &quot;Segoe UI&quot;;</string>
</property>
<property name="editTriggers">
<set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
</property>
<property name="dragEnabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QListWidget" name="edit_second_pads_collection_list">
<property name="styleSheet">
<string notr="true">font: 15pt &quot;Segoe UI&quot;;</string>
</property>
<property name="editTriggers">
<set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
</property>
<property name="dragEnabled">
<bool>true</bool>
<widget class="QWidget" name="edit_second_pads_collection_widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="edit_second_pads_collection_lay">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="edit_second_pads_collection_label">
<property name="text">
<string>Pads collection 2</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="edit_second_pads_collection_list">
<property name="styleSheet">
<string notr="true">font: 15pt &quot;Segoe UI&quot;;</string>
</property>
<property name="editTriggers">
<set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
</property>
<property name="dragEnabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
@@ -636,19 +666,19 @@ QListWidget:item:selected {
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="browser_page"/>
<widget class="QWidget" name="collections_page"/>
<widget class="QWidget" name="stream_page"/>
<widget class="QWidget" name="collab_page"/>
<widget class="QWidget" name="download_page"/>
<widget class="QWidget" name="settings_page"/>
<widget class="QWidget" name="browser_page"/>
<widget class="QWidget" name="collections_page"/>
<widget class="QWidget" name="stream_page"/>
<widget class="QWidget" name="collab_page"/>
<widget class="QWidget" name="download_page"/>
<widget class="QWidget" name="settings_page"/>
</widget>
</item>
</layout>
</widget>
</item>
</layout>

View File

@@ -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)

View File

@@ -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))

View File

@@ -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)

View File

@@ -0,0 +1 @@
from .padslist import Pads

10
modules/padslist/model.py Normal file
View File

@@ -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]

View File

@@ -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