Added file explorer

This commit is contained in:
BarsTiger
2022-12-18 16:37:20 +02:00
parent 36933437f8
commit fb1f10608f
15 changed files with 1104 additions and 496 deletions

View File

@@ -187,6 +187,78 @@ class Ui_MainWindow(object):
self.content.addWidget(self.pads_page) self.content.addWidget(self.pads_page)
self.browser_page = QtWidgets.QWidget() self.browser_page = QtWidgets.QWidget()
self.browser_page.setObjectName("browser_page") self.browser_page.setObjectName("browser_page")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.browser_page)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.browser_page_tabs = QtWidgets.QTabWidget(self.browser_page)
self.browser_page_tabs.setObjectName("browser_page_tabs")
self.first_filebrowser_tab = QtWidgets.QWidget()
self.first_filebrowser_tab.setObjectName("first_filebrowser_tab")
self.first_filebrowser_tab_lay = QtWidgets.QHBoxLayout(self.first_filebrowser_tab)
self.first_filebrowser_tab_lay.setContentsMargins(0, 0, 0, 0)
self.first_filebrowser_tab_lay.setObjectName("first_filebrowser_tab_lay")
self.folders_browser_treeview_first = QtWidgets.QTreeView(self.first_filebrowser_tab)
self.folders_browser_treeview_first.setObjectName("folders_browser_treeview_first")
self.first_filebrowser_tab_lay.addWidget(self.folders_browser_treeview_first)
self.files_browser_listwidget_first = QtWidgets.QListWidget(self.first_filebrowser_tab)
self.files_browser_listwidget_first.setObjectName("files_browser_listwidget_first")
self.first_filebrowser_tab_lay.addWidget(self.files_browser_listwidget_first)
self.browser_page_tabs.addTab(self.first_filebrowser_tab, "")
self.second_filebrowser_tab = QtWidgets.QWidget()
self.second_filebrowser_tab.setObjectName("second_filebrowser_tab")
self.second_filebrowser_tab_lay = QtWidgets.QHBoxLayout(self.second_filebrowser_tab)
self.second_filebrowser_tab_lay.setContentsMargins(0, 0, 0, 0)
self.second_filebrowser_tab_lay.setObjectName("second_filebrowser_tab_lay")
self.folders_browser_treeview_second = QtWidgets.QTreeView(self.second_filebrowser_tab)
self.folders_browser_treeview_second.setObjectName("folders_browser_treeview_second")
self.second_filebrowser_tab_lay.addWidget(self.folders_browser_treeview_second)
self.files_browser_listwidget_second = QtWidgets.QListWidget(self.second_filebrowser_tab)
self.files_browser_listwidget_second.setObjectName("files_browser_listwidget_second")
self.second_filebrowser_tab_lay.addWidget(self.files_browser_listwidget_second)
self.browser_page_tabs.addTab(self.second_filebrowser_tab, "")
self.browser_page_options_tab = QtWidgets.QWidget()
self.browser_page_options_tab.setObjectName("browser_page_options_tab")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.browser_page_options_tab)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.first_browser_parent_dir_path_label = QtWidgets.QLabel(self.browser_page_options_tab)
self.first_browser_parent_dir_path_label.setObjectName("first_browser_parent_dir_path_label")
self.verticalLayout_3.addWidget(self.first_browser_parent_dir_path_label)
self.first_browser_parent_dir_path_widget = QtWidgets.QWidget(self.browser_page_options_tab)
self.first_browser_parent_dir_path_widget.setObjectName("first_browser_parent_dir_path_widget")
self.first_browser_parent_dir_path_lay = QtWidgets.QHBoxLayout(self.first_browser_parent_dir_path_widget)
self.first_browser_parent_dir_path_lay.setContentsMargins(0, 0, 0, 0)
self.first_browser_parent_dir_path_lay.setObjectName("first_browser_parent_dir_path_lay")
self.first_browser_parent_dir_box = QtWidgets.QLineEdit(self.first_browser_parent_dir_path_widget)
self.first_browser_parent_dir_box.setMinimumSize(QtCore.QSize(0, 30))
self.first_browser_parent_dir_box.setObjectName("first_browser_parent_dir_box")
self.first_browser_parent_dir_path_lay.addWidget(self.first_browser_parent_dir_box)
self.first_browser_parent_dir_button = QtWidgets.QPushButton(self.first_browser_parent_dir_path_widget)
self.first_browser_parent_dir_button.setMinimumSize(QtCore.QSize(100, 30))
self.first_browser_parent_dir_button.setObjectName("first_browser_parent_dir_button")
self.first_browser_parent_dir_path_lay.addWidget(self.first_browser_parent_dir_button)
self.verticalLayout_3.addWidget(self.first_browser_parent_dir_path_widget)
self.second_browser_parent_dir_path_label = QtWidgets.QLabel(self.browser_page_options_tab)
self.second_browser_parent_dir_path_label.setObjectName("second_browser_parent_dir_path_label")
self.verticalLayout_3.addWidget(self.second_browser_parent_dir_path_label)
self.second_browser_parent_dir_path_widget = QtWidgets.QWidget(self.browser_page_options_tab)
self.second_browser_parent_dir_path_widget.setObjectName("second_browser_parent_dir_path_widget")
self.second_browser_parent_dir_path_lay = QtWidgets.QHBoxLayout(self.second_browser_parent_dir_path_widget)
self.second_browser_parent_dir_path_lay.setContentsMargins(0, 0, 0, 0)
self.second_browser_parent_dir_path_lay.setObjectName("second_browser_parent_dir_path_lay")
self.second_browser_parent_dir_box = QtWidgets.QLineEdit(self.second_browser_parent_dir_path_widget)
self.second_browser_parent_dir_box.setMinimumSize(QtCore.QSize(0, 30))
self.second_browser_parent_dir_box.setText("")
self.second_browser_parent_dir_box.setObjectName("second_browser_parent_dir_box")
self.second_browser_parent_dir_path_lay.addWidget(self.second_browser_parent_dir_box)
self.second_browser_parent_dir_button = QtWidgets.QPushButton(self.second_browser_parent_dir_path_widget)
self.second_browser_parent_dir_button.setMinimumSize(QtCore.QSize(100, 30))
self.second_browser_parent_dir_button.setObjectName("second_browser_parent_dir_button")
self.second_browser_parent_dir_path_lay.addWidget(self.second_browser_parent_dir_button)
self.verticalLayout_3.addWidget(self.second_browser_parent_dir_path_widget)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_3.addItem(spacerItem)
self.browser_page_tabs.addTab(self.browser_page_options_tab, "")
self.verticalLayout_2.addWidget(self.browser_page_tabs)
self.content.addWidget(self.browser_page) self.content.addWidget(self.browser_page)
self.collections_page = QtWidgets.QWidget() self.collections_page = QtWidgets.QWidget()
self.collections_page.setObjectName("collections_page") self.collections_page.setObjectName("collections_page")
@@ -284,8 +356,8 @@ class Ui_MainWindow(object):
self.use_original_streaming_method_desc.setWordWrap(True) self.use_original_streaming_method_desc.setWordWrap(True)
self.use_original_streaming_method_desc.setObjectName("use_original_streaming_method_desc") self.use_original_streaming_method_desc.setObjectName("use_original_streaming_method_desc")
self.audio_devices_settings_tab_lay.addWidget(self.use_original_streaming_method_desc, 0, QtCore.Qt.AlignTop) self.audio_devices_settings_tab_lay.addWidget(self.use_original_streaming_method_desc, 0, QtCore.Qt.AlignTop)
spacerItem = QtWidgets.QSpacerItem(20, 0, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) spacerItem1 = QtWidgets.QSpacerItem(20, 0, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.audio_devices_settings_tab_lay.addItem(spacerItem) self.audio_devices_settings_tab_lay.addItem(spacerItem1)
self.settings_tabs_widget.addTab(self.audio_devices_settings_tab, "") self.settings_tabs_widget.addTab(self.audio_devices_settings_tab, "")
self.general_settings_tab = QtWidgets.QWidget() self.general_settings_tab = QtWidgets.QWidget()
self.general_settings_tab.setObjectName("general_settings_tab") self.general_settings_tab.setObjectName("general_settings_tab")
@@ -337,8 +409,8 @@ class Ui_MainWindow(object):
self.pusher_settings_tab.setObjectName("pusher_settings_tab") self.pusher_settings_tab.setObjectName("pusher_settings_tab")
self.api_keys_settings_tabs_widget.addTab(self.pusher_settings_tab, "") self.api_keys_settings_tabs_widget.addTab(self.pusher_settings_tab, "")
self.general_settings_tab_lay.addWidget(self.api_keys_settings_tabs_widget, 0, QtCore.Qt.AlignTop) self.general_settings_tab_lay.addWidget(self.api_keys_settings_tabs_widget, 0, QtCore.Qt.AlignTop)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.general_settings_tab_lay.addItem(spacerItem1) self.general_settings_tab_lay.addItem(spacerItem2)
self.clear_temp_button = QtWidgets.QPushButton(self.general_settings_tab) self.clear_temp_button = QtWidgets.QPushButton(self.general_settings_tab)
self.clear_temp_button.setMinimumSize(QtCore.QSize(0, 40)) self.clear_temp_button.setMinimumSize(QtCore.QSize(0, 40))
self.clear_temp_button.setObjectName("clear_temp_button") self.clear_temp_button.setObjectName("clear_temp_button")
@@ -402,6 +474,7 @@ class Ui_MainWindow(object):
self.retranslateUi(MainWindow) self.retranslateUi(MainWindow)
self.menu.setCurrentRow(-1) self.menu.setCurrentRow(-1)
self.pads_content.setCurrentIndex(0) self.pads_content.setCurrentIndex(0)
self.browser_page_tabs.setCurrentIndex(0)
self.settings_tabs_widget.setCurrentIndex(0) self.settings_tabs_widget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
@@ -433,6 +506,15 @@ class Ui_MainWindow(object):
self.edit_first_pads_collection_label.setText(_translate("MainWindow", "Pads collection 1")) self.edit_first_pads_collection_label.setText(_translate("MainWindow", "Pads collection 1"))
self.edit_second_pads_collection_label.setText(_translate("MainWindow", "Pads collection 2")) self.edit_second_pads_collection_label.setText(_translate("MainWindow", "Pads collection 2"))
self.pads_content.setTabText(self.pads_content.indexOf(self.edit_pads_tab), _translate("MainWindow", "Edit pads")) self.pads_content.setTabText(self.pads_content.indexOf(self.edit_pads_tab), _translate("MainWindow", "Edit pads"))
self.browser_page_tabs.setTabText(self.browser_page_tabs.indexOf(self.first_filebrowser_tab), _translate("MainWindow", "First browser"))
self.browser_page_tabs.setTabText(self.browser_page_tabs.indexOf(self.second_filebrowser_tab), _translate("MainWindow", "Second browser"))
self.first_browser_parent_dir_path_label.setText(_translate("MainWindow", "First browser parent dir"))
self.first_browser_parent_dir_box.setPlaceholderText(_translate("MainWindow", "D:\\"))
self.first_browser_parent_dir_button.setText(_translate("MainWindow", "Choose folder"))
self.second_browser_parent_dir_path_label.setText(_translate("MainWindow", "Second browser parent dir"))
self.second_browser_parent_dir_box.setPlaceholderText(_translate("MainWindow", "C:\\"))
self.second_browser_parent_dir_button.setText(_translate("MainWindow", "Choose folder"))
self.browser_page_tabs.setTabText(self.browser_page_tabs.indexOf(self.browser_page_options_tab), _translate("MainWindow", "Options"))
self.play_options_group.setTitle(_translate("MainWindow", "Play options")) self.play_options_group.setTitle(_translate("MainWindow", "Play options"))
self.output_device_play_label.setText(_translate("MainWindow", "Output device (or virtual mic input)")) self.output_device_play_label.setText(_translate("MainWindow", "Output device (or virtual mic input)"))
self.preview_device_play_label.setText(_translate("MainWindow", "Preview device (your headphones)")) self.preview_device_play_label.setText(_translate("MainWindow", "Preview device (your headphones)"))

View File

@@ -20,21 +20,22 @@
<property name="styleSheet"> <property name="styleSheet">
<string notr="true"> <string notr="true">
QWidget { QWidget {
background-color: rgb(30, 30, 30); background-color: #1e1e1e;
color: rgb(255, 255, 255); color: white;
font: 10pt &quot;Segoe UI&quot;; font: 10pt &quot;Segoe UI&quot;;
} }
QScrollBar:vertical, QScrollBar:vertical,
QScrollBar:horizontal { QScrollBar:horizontal {
border: none; border: none;
background: rgb(30, 30, 30); background: #1e1e1e;
width: 10px; width: 10px;
margin: 15px 0 15px 0; margin: 15px 0 15px 0;
border-radius: 0px; border-radius: 0px;
} }
QScrollBar::handle:vertical, QScrollBar::handle:vertical,
QScrollBar::handle:horizontal { QScrollBar::handle:horizontal {
background-color: rgb(139, 139, 139); background-color: #8b8b8b;
min-height: 30px; min-height: 30px;
border-radius: 5px; border-radius: 5px;
} }
@@ -42,7 +43,7 @@ QScrollBar::handle:vertical:hover,
QScrollBar::handle:vertical:pressed, QScrollBar::handle:vertical:pressed,
QScrollBar::handle:horizontal:hover, QScrollBar::handle:horizontal:hover,
QScrollBar::handle:horizontal:pressed { QScrollBar::handle:horizontal:pressed {
background-color: rgb(149, 149, 149); background-color: #959595;
} }
QScrollBar::sub-line:vertical, QScrollBar::sub-line:vertical,
QScrollBar::add-line:vertical, QScrollBar::add-line:vertical,
@@ -56,6 +57,7 @@ QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal,
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
background: none; background: none;
} }
QPushButton { QPushButton {
color: white; color: white;
border-width: 1px; border-width: 1px;
@@ -75,6 +77,7 @@ QPushButton:disabled {
background-color: #434343; background-color: #434343;
border-color: #0000; border-color: #0000;
} }
QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit { QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
border-width: 1px; border-width: 1px;
border-radius: 5px; border-radius: 5px;
@@ -83,7 +86,8 @@ QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
background-color: #242424; background-color: #242424;
font: 10pt &quot;Segoe UI&quot;; font: 10pt &quot;Segoe UI&quot;;
} }
QListWidget {
QListWidget, QListView, QTreeView {
border-width: 1px; border-width: 1px;
border-radius: 15px; border-radius: 15px;
border-style: solid; border-style: solid;
@@ -92,16 +96,25 @@ QListWidget {
background-color: #242424; background-color: #242424;
font: 10pt &quot;Segoe UI&quot;; font: 10pt &quot;Segoe UI&quot;;
} }
QListWidget:item { QListWidget:item, QListView:item, QTreeView:item {
background-color: #242424; background-color: #242424;
selection-color: white; selection-color: white;
} }
QListWidget:item:hover { QListWidget:item:hover, QListView:item:hover, QTreeView:item:hover {
background-color: #323232; background-color: #323232;
} }
QListWidget:item:selected { QListWidget:item:selected, QListView:item:selected, QTreeView:item:selected {
background-color: #777777; background-color: #777777;
} }
QTreeView::branch:has-children:closed {
image: url(&quot;:/img/img/down.svg&quot;);
}
QTreeView::branch:has-children:open {
image: url(&quot;:/img/img/up.svg&quot;);
}
QComboBox QComboBox
{ {
border-width: 1px; border-width: 1px;
@@ -109,7 +122,7 @@ QComboBox
border-style: solid; border-style: solid;
border-color: #303030; border-color: #303030;
background-color: #2c2d2e; background-color: #2c2d2e;
color: #ffffff; color: white;
} }
QComboBox::disabled QComboBox::disabled
{ {
@@ -128,7 +141,7 @@ QComboBox:on
QComboBox QAbstractItemView QComboBox QAbstractItemView
{ {
background-color: #434343; background-color: #434343;
color: #ffffff; color: white;
selection-background-color: #777777; selection-background-color: #777777;
selection-color: white; selection-color: white;
outline: 0; outline: 0;
@@ -139,10 +152,11 @@ QComboBox::drop-down
subcontrol-position: top right; subcontrol-position: top right;
border-radius: 6px; border-radius: 6px;
} }
QTabBar::tab QTabBar::tab
{ {
background-color: #2c2d2e; background-color: #2c2d2e;
color: #ffffff; color: white;
border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
border-top-left-radius: 3px; border-top-left-radius: 3px;
@@ -158,7 +172,7 @@ QTabBar::tab:disabled
QTabWidget::pane QTabWidget::pane
{ {
background-color: #a0a0a0; background-color: #a0a0a0;
color: #ffffff; color: white;
border: 3px solid; border: 3px solid;
border-radius: 15px; border-radius: 15px;
border-color: #1c1c1c; border-color: #1c1c1c;
@@ -166,7 +180,7 @@ QTabWidget::pane
QTabBar::tab:selected QTabBar::tab:selected
{ {
background-color: #262728; background-color: #262728;
color: #ffffff; color: white;
border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
border-top-left-radius: 3px; border-top-left-radius: 3px;
@@ -692,7 +706,204 @@ QListWidget:item:selected {
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="browser_page"/> <widget class="QWidget" name="browser_page">
<layout class="QVBoxLayout" name="verticalLayout_2">
<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="browser_page_tabs">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="first_filebrowser_tab">
<attribute name="title">
<string>First browser</string>
</attribute>
<layout class="QHBoxLayout" name="first_filebrowser_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="QTreeView" name="folders_browser_treeview_first"/>
</item>
<item>
<widget class="QListWidget" name="files_browser_listwidget_first"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="second_filebrowser_tab">
<attribute name="title">
<string>Second browser</string>
</attribute>
<layout class="QHBoxLayout" name="second_filebrowser_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="QTreeView" name="folders_browser_treeview_second"/>
</item>
<item>
<widget class="QListWidget" name="files_browser_listwidget_second"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="browser_page_options_tab">
<attribute name="title">
<string>Options</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="first_browser_parent_dir_path_label">
<property name="text">
<string>First browser parent dir</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="first_browser_parent_dir_path_widget" native="true">
<layout class="QHBoxLayout" name="first_browser_parent_dir_path_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="QLineEdit" name="first_browser_parent_dir_box">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="placeholderText">
<string>D:\</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="first_browser_parent_dir_button">
<property name="minimumSize">
<size>
<width>100</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>Choose folder</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="second_browser_parent_dir_path_label">
<property name="text">
<string>Second browser parent dir</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="second_browser_parent_dir_path_widget" native="true">
<layout class="QHBoxLayout" name="second_browser_parent_dir_path_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="QLineEdit" name="second_browser_parent_dir_box">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="placeholderText">
<string>C:\</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="second_browser_parent_dir_button">
<property name="minimumSize">
<size>
<width>100</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>Choose folder</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="browser_page_options_spacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="collections_page"/> <widget class="QWidget" name="collections_page"/>
<widget class="QWidget" name="stream_page"/> <widget class="QWidget" name="stream_page"/>
<widget class="QWidget" name="collab_page"/> <widget class="QWidget" name="collab_page"/>

View File

@@ -1,5 +1,7 @@
<RCC> <RCC>
<qresource prefix="img"> <qresource prefix="img">
<file>img/down.svg</file>
<file>img/up.svg</file>
<file>img/pause.png</file> <file>img/pause.png</file>
<file>img/play.png</file> <file>img/play.png</file>
<file>img/kotopad.ico</file> <file>img/kotopad.ico</file>

File diff suppressed because it is too large Load Diff

1
gui/img/down.svg Normal file
View File

@@ -0,0 +1 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="26px" height="26px" viewBox="0,0,256,256"><g transform="translate(49.23077,49.23077) scale(0.61538,0.61538)"><g fill="#7b7b7b" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(9.84615,9.84615)"><path d="M13,15.40625l8.76563,-8.58594c0.39063,-0.38281 1.01563,-0.37891 1.40625,0.00781l1.53516,1.53516c0.39063,0.39453 0.39063,1.02734 -0.00391,1.41797l-10.99609,10.92578c-0.19531,0.19531 -0.44922,0.29297 -0.70703,0.29297c-0.25781,0 -0.51172,-0.09766 -0.70703,-0.29297l-10.99609,-10.92578c-0.39453,-0.39062 -0.39453,-1.02344 -0.00391,-1.41797l1.53516,-1.53516c0.39063,-0.38672 1.01563,-0.39062 1.40625,-0.00781z"></path></g></g></g></svg>

After

Width:  |  Height:  |  Size: 976 B

1
gui/img/up.svg Normal file
View File

@@ -0,0 +1 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="26px" height="26px" viewBox="0,0,256,256"><g transform="translate(49.23077,49.23077) scale(0.61538,0.61538)"><g fill="#7b7b7b" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(9.84615,9.84615)"><path d="M13,10.59375l8.76563,8.58594c0.39063,0.38281 1.01563,0.37891 1.40625,-0.00781l1.53516,-1.53516c0.39063,-0.39453 0.39063,-1.02734 -0.00391,-1.41797l-10.99609,-10.92578c-0.19531,-0.19531 -0.44922,-0.29297 -0.70703,-0.29297c-0.25781,0 -0.51172,0.09766 -0.70703,0.29297l-10.99609,10.92578c-0.39453,0.39063 -0.39453,1.02344 -0.00391,1.41797l1.53516,1.53516c0.39063,0.38672 1.01563,0.39063 1.40625,0.00781z"></path></g></g></g></svg>

After

Width:  |  Height:  |  Size: 972 B

View File

@@ -0,0 +1 @@
from .handlers import *

View File

@@ -0,0 +1,61 @@
from gui.gui import Ui_MainWindow
from modules.config import PathsConfig
from modules.player.player import Player
from PyQt5.QtWidgets import QFileDialog
import os
def register_handlers(ui: Ui_MainWindow, p: Player):
ui.first_browser_parent_dir_box.textChanged.connect(
lambda: (
ui.folders_browser_treeview_first.setRootIndex(
ui.dir_model_first.index(ui.first_browser_parent_dir_box.text())
),
PathsConfig.update("first_browser_path", ui.first_browser_parent_dir_box.text())
)
)
ui.second_browser_parent_dir_box.textChanged.connect(
lambda: (
ui.folders_browser_treeview_second.setRootIndex(
ui.dir_model_second.index(ui.second_browser_parent_dir_box.text())
),
PathsConfig.update("second_browser_path", ui.second_browser_parent_dir_box.text())
)
)
ui.files_browser_listwidget_first.itemDoubleClicked.connect(
lambda: (
p.set_media(
os.path.join(
ui.dir_model_first.filePath(ui.first_index),
ui.files_browser_listwidget_first.currentItem().text()
)
),
p.play(ui)
)
)
ui.files_browser_listwidget_second.itemDoubleClicked.connect(
lambda: (
p.set_media(
os.path.join(
ui.dir_model_second.filePath(ui.second_index),
ui.files_browser_listwidget_second.currentItem().text()
)
),
p.play(ui)
)
)
ui.first_browser_parent_dir_button.clicked.connect(
lambda: ui.first_browser_parent_dir_box.setText(
QFileDialog.getExistingDirectory(caption="Select root directory for first browser")
)
)
ui.second_browser_parent_dir_button.clicked.connect(
lambda: ui.second_browser_parent_dir_box.setText(
QFileDialog.getExistingDirectory(caption="Select root directory for second browser")
)
)

View File

@@ -0,0 +1,64 @@
from gui.gui import Ui_MainWindow
from PyQt5 import QtWidgets, QtCore
from modules.config import PathsConfig
from gui.modules.core import popup
import os
def fill_paths(ui: Ui_MainWindow):
ui.first_browser_parent_dir_box.setText(PathsConfig.get().first_browser_path)
ui.second_browser_parent_dir_box.setText(PathsConfig.get().second_browser_path)
def first_clicked(ui: Ui_MainWindow, index):
ui.first_index = index
ui.files_browser_listwidget_first.clear()
try:
ui.files_browser_listwidget_first.addItems(
[f for f in os.listdir(ui.dir_model_first.filePath(index))
if os.path.isfile(os.path.join(ui.dir_model_first.filePath(index), f))]
)
except Exception as e:
print(e)
popup.popup("Error", "Cannot access files in this folder")
def second_clicked(ui: Ui_MainWindow, index):
ui.second_index = index
ui.files_browser_listwidget_second.clear()
try:
ui.files_browser_listwidget_second.addItems(
[f for f in os.listdir(ui.dir_model_second.filePath(index))
if os.path.isfile(os.path.join(ui.dir_model_second.filePath(index), f))]
)
except Exception as e:
print(e)
popup.popup("Error", "Cannot access files in this folder")
def init_explorer(ui: Ui_MainWindow):
fill_paths(ui)
ui.dir_model_first = QtWidgets.QFileSystemModel()
ui.dir_model_first.setFilter(QtCore.QDir.Filter.NoDotAndDotDot | QtCore.QDir.Filter.AllDirs)
ui.dir_model_first.setRootPath("")
ui.folders_browser_treeview_first.setModel(ui.dir_model_first)
ui.folders_browser_treeview_first.setRootIndex(ui.dir_model_first.index(ui.first_browser_parent_dir_box.text()))
ui.folders_browser_treeview_first.clicked[QtCore.QModelIndex].connect(lambda idx: first_clicked(ui, idx))
ui.folders_browser_treeview_first.setHeaderHidden(True)
for i in range(1, 4):
ui.folders_browser_treeview_first.hideColumn(i)
ui.dir_model_second = QtWidgets.QFileSystemModel()
ui.dir_model_second.setFilter(QtCore.QDir.Filter.NoDotAndDotDot | QtCore.QDir.Filter.AllDirs)
ui.dir_model_second.setRootPath("")
ui.folders_browser_treeview_second.setModel(ui.dir_model_second)
ui.folders_browser_treeview_second.setRootIndex(ui.dir_model_second.index(ui.second_browser_parent_dir_box.text()))
ui.folders_browser_treeview_second.clicked[QtCore.QModelIndex].connect(lambda idx: second_clicked(ui, idx))
ui.folders_browser_treeview_second.setHeaderHidden(True)
for i in range(1, 4):
ui.folders_browser_treeview_second.hideColumn(i)

View File

@@ -5,6 +5,7 @@ from gui.modules import pads
from gui.modules import player from gui.modules import player
from gui.modules import settings from gui.modules import settings
from gui.modules import restreammic from gui.modules import restreammic
from gui.modules import explorer
from modules.player.player import Player from modules.player.player import Player
from modules.restream.restream import Restreamer from modules.restream.restream import Restreamer
@@ -15,3 +16,4 @@ def register_handlers(ui: Ui_MainWindow, MainWindow: QMainWindow, p: Player, rs:
player.register_handlers(ui, p) player.register_handlers(ui, p)
settings.register_handlers(ui) settings.register_handlers(ui)
restreammic.register_handlers(ui, MainWindow, rs) restreammic.register_handlers(ui, MainWindow, rs)
explorer.register_handlers(ui, p)

View File

@@ -8,6 +8,7 @@ from PyQt5 import QtCore
from modules.config import Config from modules.config import Config
from modules.player.player import Player from modules.player.player import Player
from modules.restream.restream import Restreamer from modules.restream.restream import Restreamer
from gui.modules.explorer import initialize
def on_load(ui: Ui_MainWindow, MainWindow: QMainWindow): def on_load(ui: Ui_MainWindow, MainWindow: QMainWindow):
@@ -26,6 +27,8 @@ def on_load(ui: Ui_MainWindow, MainWindow: QMainWindow):
p = Player(ui) p = Player(ui)
rs = Restreamer() rs = Restreamer()
initialize.init_explorer(ui)
(lambda: rs.restart(ui) if ui.restream_micro_checkbox.isChecked() else rs.stop())() (lambda: rs.restart(ui) if ui.restream_micro_checkbox.isChecked() else rs.stop())()
register.register_handlers(ui, MainWindow, p, rs) register.register_handlers(ui, MainWindow, p, rs)

View File

@@ -8,7 +8,6 @@ QWidget {
font: 10pt "Segoe UI"; font: 10pt "Segoe UI";
} }
QScrollBar:vertical, QScrollBar:vertical,
QScrollBar:horizontal { QScrollBar:horizontal {
border: none; border: none;
@@ -17,28 +16,24 @@ QScrollBar:horizontal {
margin: 15px 0 15px 0; margin: 15px 0 15px 0;
border-radius: 0px; border-radius: 0px;
} }
QScrollBar::handle:vertical, QScrollBar::handle:vertical,
QScrollBar::handle:horizontal { QScrollBar::handle:horizontal {
background-color: rgba(139, 139, 139, 0); background-color: rgba(139, 139, 139, 0);
min-height: 30px; min-height: 30px;
border-radius: 5px; border-radius: 5px;
} }
QScrollBar::handle:vertical:hover, QScrollBar::handle:vertical:hover,
QScrollBar::handle:vertical:pressed, QScrollBar::handle:vertical:pressed,
QScrollBar::handle:horizontal:hover, QScrollBar::handle:horizontal:hover,
QScrollBar::handle:horizontal:pressed { QScrollBar::handle:horizontal:pressed {
background-color: rgba(149, 149, 149, 0); background-color: rgba(149, 149, 149, 0);
} }
QScrollBar::sub-line:vertical, QScrollBar::sub-line:vertical,
QScrollBar::add-line:vertical, QScrollBar::add-line:vertical,
QScrollBar::up-arrow:vertical, QScrollBar::up-arrow:vertical,
QScrollBar::down-arrow:vertical { QScrollBar::down-arrow:vertical {
height: 0px; height: 0px;
} }
QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical, QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical,
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical, QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical,
QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal, QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal,
@@ -46,7 +41,6 @@ QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
background: none; background: none;
} }
QPushButton { QPushButton {
color: white; color: white;
border-width: 1px; border-width: 1px;
@@ -67,7 +61,6 @@ QPushButton:disabled {
border-color: rgba(0, 0, 0, 0.7); border-color: rgba(0, 0, 0, 0.7);
} }
QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit { QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
border-width: 1px; border-width: 1px;
border-radius: 5px; border-radius: 5px;
@@ -77,8 +70,7 @@ QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
font: 10pt "Segoe UI"; font: 10pt "Segoe UI";
} }
QListWidget, QListView, QTreeView {
QListWidget {
border-width: 1px; border-width: 1px;
border-radius: 15px; border-radius: 15px;
border-style: solid; border-style: solid;
@@ -87,17 +79,24 @@ QListWidget {
background-color: rgba(100, 100, 100, 0); background-color: rgba(100, 100, 100, 0);
font: 10pt "Segoe UI"; font: 10pt "Segoe UI";
} }
QListWidget:item { QListWidget:item, QListView:item, QTreeView:item {
background-color: rgba(36, 36, 36, 0); background-color: rgba(36, 36, 36, 0);
selection-color: white; selection-color: white;
} }
QListWidget:item:hover { QListWidget:item:hover, QListView:item:hover, QTreeView:item:hover {
background-color: rgba(50, 50, 50, 0); background-color: rgba(50, 50, 50, 0);
} }
QListWidget:item:selected { QListWidget:item:selected, QListView:item:selected, QTreeView:item:selected {
background-color: rgba(119, 119, 119, 1); background-color: rgba(119, 119, 119, 1);
} }
QTreeView::branch:has-children:closed {
image: url(":/img/img/down.svg");
}
QTreeView::branch:has-children:open {
image: url(":/img/img/up.svg");
}
QComboBox QComboBox
{ {
@@ -108,33 +107,28 @@ QComboBox
background-color: rgba(44, 45, 46, 0); background-color: rgba(44, 45, 46, 0);
color: white; color: white;
} }
QComboBox::disabled QComboBox::disabled
{ {
background-color: rgba(67, 67, 67, 0); background-color: rgba(67, 67, 67, 0);
color: #656565; color: rgba(101, 101, 101, 1);;
border-color: rgba(67, 67, 67); border-color: rgba(67, 67, 67);
} }
QComboBox:hover QComboBox:hover
{ {
background-color: rgba(50, 50, 50, 0); background-color: rgba(50, 50, 50, 0);
} }
QComboBox:on QComboBox:on
{ {
background-color: rgba(67, 67, 67, 0); background-color: rgba(67, 67, 67, 0);
} }
QComboBox QAbstractItemView QComboBox QAbstractItemView
{ {
background-color: rgba(67, 67, 67, 0); background-color: rgba(67, 67, 67, 0);
color: #ffffff; color: white;
selection-background-color: rgba(119, 119, 119, 0); selection-background-color: rgba(119, 119, 119, 0);
selection-color: white; selection-color: white;
outline: 0; outline: 0;
} }
QComboBox::drop-down QComboBox::drop-down
{ {
subcontrol-origin: padding; subcontrol-origin: padding;
@@ -142,11 +136,10 @@ QComboBox::drop-down
border-radius: 6px; border-radius: 6px;
} }
QTabBar::tab QTabBar::tab
{ {
background-color: rgba(44, 45, 46, 0); background-color: rgba(44, 45, 46, 0);
color: #ffffff; color: white;
border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
border-top-left-radius: 3px; border-top-left-radius: 3px;
@@ -154,26 +147,23 @@ QTabBar::tab
border-color: rgba(48, 48, 48); border-color: rgba(48, 48, 48);
padding: 5px; padding: 5px;
} }
QTabBar::tab:disabled QTabBar::tab:disabled
{ {
background-color: rgba(101, 101, 101, 0); background-color: rgba(101, 101, 101, 0);
color: #656565; color: rgba(101, 101, 101, 1);;
} }
QTabWidget::pane QTabWidget::pane
{ {
background-color: rgba(160, 160, 160, 0); background-color: rgba(160, 160, 160, 0);
color: #ffffff; color: white;
border: 3px solid; border: 3px solid;
border-radius: 15px; border-radius: 15px;
border-color: rgba(28, 28, 28); border-color: rgba(28, 28, 28);
} }
QTabBar::tab:selected QTabBar::tab:selected
{ {
background-color: rgba(38, 39, 40, 0); background-color: rgba(38, 39, 40, 0);
color: #ffffff; color: white;
border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
border-top-left-radius: 3px; border-top-left-radius: 3px;
@@ -181,83 +171,68 @@ QTabBar::tab:selected
border-color: rgba(48, 48, 48); border-color: rgba(48, 48, 48);
padding: 5px; padding: 5px;
} }
QTabBar::tab:selected:disabled QTabBar::tab:selected:disabled
{ {
background-color: rgba(64, 64, 64, 0); background-color: rgba(64, 64, 64, 0);
color: #656565; color: rgba(101, 101, 101, 1);
} }
QTabBar::tab:!selected QTabBar::tab:!selected
{ {
background-color: rgba(38, 38, 38, 0); background-color: rgba(38, 38, 38, 0);
} }
QTabBar::tab:!selected:hover QTabBar::tab:!selected:hover
{ {
background-color: rgba(50, 50, 50, 0); background-color: rgba(50, 50, 50, 0);
} }
QTabBar::tab:top:!selected QTabBar::tab:top:!selected
{ {
margin-top: 3px; margin-top: 3px;
} }
QTabBar::tab:bottom:!selected QTabBar::tab:bottom:!selected
{ {
margin-bottom: 3px; margin-bottom: 3px;
} }
QTabBar::tab:top, QTabBar::tab:bottom QTabBar::tab:top, QTabBar::tab:bottom
{ {
min-width: 8ex; min-width: 8ex;
margin-right: -1px; margin-right: -1px;
padding: 5px 10px 5px 10px; padding: 5px 10px 5px 10px;
} }
QTabBar::tab:top:selected QTabBar::tab:top:selected
{ {
border-bottom-color: none; border-bottom-color: none;
} }
QTabBar::tab:bottom:selected QTabBar::tab:bottom:selected
{ {
border-top-color: none; border-top-color: none;
} }
QTabBar::tab:top:last, QTabBar::tab:bottom:last, QTabBar::tab:top:last, QTabBar::tab:bottom:last,
QTabBar::tab:top:only-one, QTabBar::tab:bottom:only-one QTabBar::tab:top:only-one, QTabBar::tab:bottom:only-one
{ {
margin-right: 0; margin-right: 0;
} }
QTabBar::tab:left:!selected QTabBar::tab:left:!selected
{ {
margin-right: 3px; margin-right: 3px;
} }
QTabBar::tab:right:!selected QTabBar::tab:right:!selected
{ {
margin-left: 3px; margin-left: 3px;
} }
QTabBar::tab:left, QTabBar::tab:right QTabBar::tab:left, QTabBar::tab:right
{ {
min-height: 8ex; min-height: 8ex;
margin-bottom: -1px; margin-bottom: -1px;
padding: 10px 5px 10px 5px; padding: 10px 5px 10px 5px;
} }
QTabBar::tab:left:selected QTabBar::tab:left:selected
{ {
border-left-color: none; border-left-color: none;
} }
QTabBar::tab:right:selected QTabBar::tab:right:selected
{ {
border-right-color: none; border-right-color: none;
} }
QTabBar::tab:left:last, QTabBar::tab:right:last, QTabBar::tab:left:last, QTabBar::tab:right:last,
QTabBar::tab:left:only-one, QTabBar::tab:right:only-one QTabBar::tab:left:only-one, QTabBar::tab:right:only-one
{ {
@@ -336,21 +311,22 @@ QListWidget:item:selected {
centralwidget_g = """ centralwidget_g = """
QWidget { QWidget {
background-color: rgb(30, 30, 30); background-color: #1e1e1e;
color: rgb(255, 255, 255); color: white;
font: 10pt "Segoe UI"; font: 10pt "Segoe UI";
} }
QScrollBar:vertical, QScrollBar:vertical,
QScrollBar:horizontal { QScrollBar:horizontal {
border: none; border: none;
background: rgb(30, 30, 30); background: #1e1e1e;
width: 10px; width: 10px;
margin: 15px 0 15px 0; margin: 15px 0 15px 0;
border-radius: 0px; border-radius: 0px;
} }
QScrollBar::handle:vertical, QScrollBar::handle:vertical,
QScrollBar::handle:horizontal { QScrollBar::handle:horizontal {
background-color: rgb(139, 139, 139); background-color: #8b8b8b;
min-height: 30px; min-height: 30px;
border-radius: 5px; border-radius: 5px;
} }
@@ -358,7 +334,7 @@ QScrollBar::handle:vertical:hover,
QScrollBar::handle:vertical:pressed, QScrollBar::handle:vertical:pressed,
QScrollBar::handle:horizontal:hover, QScrollBar::handle:horizontal:hover,
QScrollBar::handle:horizontal:pressed { QScrollBar::handle:horizontal:pressed {
background-color: rgb(149, 149, 149); background-color: #959595;
} }
QScrollBar::sub-line:vertical, QScrollBar::sub-line:vertical,
QScrollBar::add-line:vertical, QScrollBar::add-line:vertical,
@@ -372,6 +348,7 @@ QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal,
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
background: none; background: none;
} }
QPushButton { QPushButton {
color: white; color: white;
border-width: 1px; border-width: 1px;
@@ -391,6 +368,7 @@ QPushButton:disabled {
background-color: #434343; background-color: #434343;
border-color: #0000; border-color: #0000;
} }
QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit { QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
border-width: 1px; border-width: 1px;
border-radius: 5px; border-radius: 5px;
@@ -399,7 +377,8 @@ QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
background-color: #242424; background-color: #242424;
font: 10pt "Segoe UI"; font: 10pt "Segoe UI";
} }
QListWidget {
QListWidget, QListView, QTreeView {
border-width: 1px; border-width: 1px;
border-radius: 15px; border-radius: 15px;
border-style: solid; border-style: solid;
@@ -408,16 +387,25 @@ QListWidget {
background-color: #242424; background-color: #242424;
font: 10pt "Segoe UI"; font: 10pt "Segoe UI";
} }
QListWidget:item { QListWidget:item, QListView:item, QTreeView:item {
background-color: #242424; background-color: #242424;
selection-color: white; selection-color: white;
} }
QListWidget:item:hover { QListWidget:item:hover, QListView:item:hover, QTreeView:item:hover {
background-color: #323232; background-color: #323232;
} }
QListWidget:item:selected { QListWidget:item:selected, QListView:item:selected, QTreeView:item:selected {
background-color: #777777; background-color: #777777;
} }
QTreeView::branch:has-children:closed {
image: url(":/img/img/down.svg");
}
QTreeView::branch:has-children:open {
image: url(":/img/img/up.svg");
}
QComboBox QComboBox
{ {
border-width: 1px; border-width: 1px;
@@ -425,7 +413,7 @@ QComboBox
border-style: solid; border-style: solid;
border-color: #303030; border-color: #303030;
background-color: #2c2d2e; background-color: #2c2d2e;
color: #ffffff; color: white;
} }
QComboBox::disabled QComboBox::disabled
{ {
@@ -444,7 +432,7 @@ QComboBox:on
QComboBox QAbstractItemView QComboBox QAbstractItemView
{ {
background-color: #434343; background-color: #434343;
color: #ffffff; color: white;
selection-background-color: #777777; selection-background-color: #777777;
selection-color: white; selection-color: white;
outline: 0; outline: 0;
@@ -455,10 +443,11 @@ QComboBox::drop-down
subcontrol-position: top right; subcontrol-position: top right;
border-radius: 6px; border-radius: 6px;
} }
QTabBar::tab QTabBar::tab
{ {
background-color: #2c2d2e; background-color: #2c2d2e;
color: #ffffff; color: white;
border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
border-top-left-radius: 3px; border-top-left-radius: 3px;
@@ -474,7 +463,7 @@ QTabBar::tab:disabled
QTabWidget::pane QTabWidget::pane
{ {
background-color: #a0a0a0; background-color: #a0a0a0;
color: #ffffff; color: white;
border: 3px solid; border: 3px solid;
border-radius: 15px; border-radius: 15px;
border-color: #1c1c1c; border-color: #1c1c1c;
@@ -482,7 +471,7 @@ QTabWidget::pane
QTabBar::tab:selected QTabBar::tab:selected
{ {
background-color: #262728; background-color: #262728;
color: #ffffff; color: white;
border-style: solid; border-style: solid;
border-width: 1px; border-width: 1px;
border-top-left-radius: 3px; border-top-left-radius: 3px;
@@ -618,7 +607,7 @@ QListWidget:item {
padding-left: 12px; padding-left: 12px;
height: 60px; height: 60px;
background-color: #191919; background-color: #191919;
selection-color: rgba(255, 255, 255); selection-color: white;
} }
QListWidget:item:hover { QListWidget:item:hover {
background-color: #323232; background-color: #323232;

View File

@@ -1 +1,2 @@
from .settings import Config from .settings import Config
from .paths import PathsConfig

View File

@@ -13,3 +13,10 @@ class ConfigModel:
out_micro: str out_micro: str
restream: bool restream: bool
direct_stream: bool direct_stream: bool
@dataclass_json
@dataclass(frozen=True)
class PathsModel:
first_browser_path: str
second_browser_path: str

43
modules/config/paths.py Normal file
View File

@@ -0,0 +1,43 @@
from modules.config.model import PathsModel
import json
import os
class PathsConfig:
@staticmethod
def default():
return {
"first_browser_path": "",
"second_browser_path": ""
}
@staticmethod
def fix() -> None:
try:
with open("data/config.path", "w") as file:
json.dump(PathsConfig.default(), file)
except FileNotFoundError:
if not os.path.exists('data'):
os.mkdir('data')
PathsConfig.fix()
@staticmethod
def get() -> PathsModel:
try:
with open("data/config.path", "r") as file:
return PathsModel.from_dict(json.load(file))
except:
PathsConfig.fix()
return PathsConfig.get()
@staticmethod
def update(key: str, value: str | None) -> dict:
with open("data/config.path", "r") as file:
settings = json.load(file)
settings[key] = value
with open("data/config.path", "w") as file:
json.dump(settings, file)
return settings