Added file explorer
This commit is contained in:
90
gui/gui.py
90
gui/gui.py
@@ -187,6 +187,78 @@ class Ui_MainWindow(object):
|
||||
self.content.addWidget(self.pads_page)
|
||||
self.browser_page = QtWidgets.QWidget()
|
||||
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.collections_page = QtWidgets.QWidget()
|
||||
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.setObjectName("use_original_streaming_method_desc")
|
||||
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)
|
||||
self.audio_devices_settings_tab_lay.addItem(spacerItem)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(20, 0, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.audio_devices_settings_tab_lay.addItem(spacerItem1)
|
||||
self.settings_tabs_widget.addTab(self.audio_devices_settings_tab, "")
|
||||
self.general_settings_tab = QtWidgets.QWidget()
|
||||
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.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)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.general_settings_tab_lay.addItem(spacerItem1)
|
||||
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.general_settings_tab_lay.addItem(spacerItem2)
|
||||
self.clear_temp_button = QtWidgets.QPushButton(self.general_settings_tab)
|
||||
self.clear_temp_button.setMinimumSize(QtCore.QSize(0, 40))
|
||||
self.clear_temp_button.setObjectName("clear_temp_button")
|
||||
@@ -402,6 +474,7 @@ class Ui_MainWindow(object):
|
||||
self.retranslateUi(MainWindow)
|
||||
self.menu.setCurrentRow(-1)
|
||||
self.pads_content.setCurrentIndex(0)
|
||||
self.browser_page_tabs.setCurrentIndex(0)
|
||||
self.settings_tabs_widget.setCurrentIndex(0)
|
||||
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_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.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.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)"))
|
||||
|
||||
241
gui/gui.ui
241
gui/gui.ui
@@ -20,21 +20,22 @@
|
||||
<property name="styleSheet">
|
||||
<string notr="true">
|
||||
QWidget {
|
||||
background-color: rgb(30, 30, 30);
|
||||
color: rgb(255, 255, 255);
|
||||
background-color: #1e1e1e;
|
||||
color: white;
|
||||
font: 10pt "Segoe UI";
|
||||
}
|
||||
|
||||
QScrollBar:vertical,
|
||||
QScrollBar:horizontal {
|
||||
border: none;
|
||||
background: rgb(30, 30, 30);
|
||||
background: #1e1e1e;
|
||||
width: 10px;
|
||||
margin: 15px 0 15px 0;
|
||||
border-radius: 0px;
|
||||
}
|
||||
QScrollBar::handle:vertical,
|
||||
QScrollBar::handle:horizontal {
|
||||
background-color: rgb(139, 139, 139);
|
||||
background-color: #8b8b8b;
|
||||
min-height: 30px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
@@ -42,7 +43,7 @@ QScrollBar::handle:vertical:hover,
|
||||
QScrollBar::handle:vertical:pressed,
|
||||
QScrollBar::handle:horizontal:hover,
|
||||
QScrollBar::handle:horizontal:pressed {
|
||||
background-color: rgb(149, 149, 149);
|
||||
background-color: #959595;
|
||||
}
|
||||
QScrollBar::sub-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 {
|
||||
background: none;
|
||||
}
|
||||
|
||||
QPushButton {
|
||||
color: white;
|
||||
border-width: 1px;
|
||||
@@ -75,6 +77,7 @@ QPushButton:disabled {
|
||||
background-color: #434343;
|
||||
border-color: #0000;
|
||||
}
|
||||
|
||||
QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
|
||||
border-width: 1px;
|
||||
border-radius: 5px;
|
||||
@@ -83,7 +86,8 @@ QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
|
||||
background-color: #242424;
|
||||
font: 10pt "Segoe UI";
|
||||
}
|
||||
QListWidget {
|
||||
|
||||
QListWidget, QListView, QTreeView {
|
||||
border-width: 1px;
|
||||
border-radius: 15px;
|
||||
border-style: solid;
|
||||
@@ -92,16 +96,25 @@ QListWidget {
|
||||
background-color: #242424;
|
||||
font: 10pt "Segoe UI";
|
||||
}
|
||||
QListWidget:item {
|
||||
QListWidget:item, QListView:item, QTreeView:item {
|
||||
background-color: #242424;
|
||||
selection-color: white;
|
||||
}
|
||||
QListWidget:item:hover {
|
||||
QListWidget:item:hover, QListView:item:hover, QTreeView:item:hover {
|
||||
background-color: #323232;
|
||||
}
|
||||
QListWidget:item:selected {
|
||||
QListWidget:item:selected, QListView:item:selected, QTreeView:item:selected {
|
||||
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
|
||||
{
|
||||
border-width: 1px;
|
||||
@@ -109,7 +122,7 @@ QComboBox
|
||||
border-style: solid;
|
||||
border-color: #303030;
|
||||
background-color: #2c2d2e;
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
}
|
||||
QComboBox::disabled
|
||||
{
|
||||
@@ -128,7 +141,7 @@ QComboBox:on
|
||||
QComboBox QAbstractItemView
|
||||
{
|
||||
background-color: #434343;
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
selection-background-color: #777777;
|
||||
selection-color: white;
|
||||
outline: 0;
|
||||
@@ -139,10 +152,11 @@ QComboBox::drop-down
|
||||
subcontrol-position: top right;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
QTabBar::tab
|
||||
{
|
||||
background-color: #2c2d2e;
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-top-left-radius: 3px;
|
||||
@@ -158,7 +172,7 @@ QTabBar::tab:disabled
|
||||
QTabWidget::pane
|
||||
{
|
||||
background-color: #a0a0a0;
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
border: 3px solid;
|
||||
border-radius: 15px;
|
||||
border-color: #1c1c1c;
|
||||
@@ -166,7 +180,7 @@ QTabWidget::pane
|
||||
QTabBar::tab:selected
|
||||
{
|
||||
background-color: #262728;
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-top-left-radius: 3px;
|
||||
@@ -692,7 +706,204 @@ QListWidget:item:selected {
|
||||
</item>
|
||||
</layout>
|
||||
</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="stream_page"/>
|
||||
<widget class="QWidget" name="collab_page"/>
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<RCC>
|
||||
<qresource prefix="img">
|
||||
<file>img/down.svg</file>
|
||||
<file>img/up.svg</file>
|
||||
<file>img/pause.png</file>
|
||||
<file>img/play.png</file>
|
||||
<file>img/kotopad.ico</file>
|
||||
|
||||
978
gui/images_rc.py
978
gui/images_rc.py
File diff suppressed because it is too large
Load Diff
1
gui/img/down.svg
Normal file
1
gui/img/down.svg
Normal 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
1
gui/img/up.svg
Normal 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 |
1
gui/modules/explorer/__init__.py
Normal file
1
gui/modules/explorer/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .handlers import *
|
||||
61
gui/modules/explorer/handlers.py
Normal file
61
gui/modules/explorer/handlers.py
Normal 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")
|
||||
)
|
||||
)
|
||||
64
gui/modules/explorer/initialize.py
Normal file
64
gui/modules/explorer/initialize.py
Normal 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)
|
||||
@@ -5,6 +5,7 @@ from gui.modules import pads
|
||||
from gui.modules import player
|
||||
from gui.modules import settings
|
||||
from gui.modules import restreammic
|
||||
from gui.modules import explorer
|
||||
from modules.player.player import Player
|
||||
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)
|
||||
settings.register_handlers(ui)
|
||||
restreammic.register_handlers(ui, MainWindow, rs)
|
||||
explorer.register_handlers(ui, p)
|
||||
|
||||
@@ -8,6 +8,7 @@ from PyQt5 import QtCore
|
||||
from modules.config import Config
|
||||
from modules.player.player import Player
|
||||
from modules.restream.restream import Restreamer
|
||||
from gui.modules.explorer import initialize
|
||||
|
||||
|
||||
def on_load(ui: Ui_MainWindow, MainWindow: QMainWindow):
|
||||
@@ -26,6 +27,8 @@ def on_load(ui: Ui_MainWindow, MainWindow: QMainWindow):
|
||||
p = Player(ui)
|
||||
rs = Restreamer()
|
||||
|
||||
initialize.init_explorer(ui)
|
||||
|
||||
(lambda: rs.restart(ui) if ui.restream_micro_checkbox.isChecked() else rs.stop())()
|
||||
|
||||
register.register_handlers(ui, MainWindow, p, rs)
|
||||
|
||||
@@ -8,7 +8,6 @@ QWidget {
|
||||
font: 10pt "Segoe UI";
|
||||
}
|
||||
|
||||
|
||||
QScrollBar:vertical,
|
||||
QScrollBar:horizontal {
|
||||
border: none;
|
||||
@@ -17,28 +16,24 @@ QScrollBar:horizontal {
|
||||
margin: 15px 0 15px 0;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical,
|
||||
QScrollBar::handle:horizontal {
|
||||
background-color: rgba(139, 139, 139, 0);
|
||||
min-height: 30px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical:hover,
|
||||
QScrollBar::handle:vertical:pressed,
|
||||
QScrollBar::handle:horizontal:hover,
|
||||
QScrollBar::handle:horizontal:pressed {
|
||||
background-color: rgba(149, 149, 149, 0);
|
||||
}
|
||||
|
||||
QScrollBar::sub-line:vertical,
|
||||
QScrollBar::add-line:vertical,
|
||||
QScrollBar::up-arrow:vertical,
|
||||
QScrollBar::down-arrow:vertical {
|
||||
height: 0px;
|
||||
}
|
||||
|
||||
QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical,
|
||||
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical,
|
||||
QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal,
|
||||
@@ -46,7 +41,6 @@ QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
|
||||
background: none;
|
||||
}
|
||||
|
||||
|
||||
QPushButton {
|
||||
color: white;
|
||||
border-width: 1px;
|
||||
@@ -67,7 +61,6 @@ QPushButton:disabled {
|
||||
border-color: rgba(0, 0, 0, 0.7);
|
||||
}
|
||||
|
||||
|
||||
QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
|
||||
border-width: 1px;
|
||||
border-radius: 5px;
|
||||
@@ -77,8 +70,7 @@ QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
|
||||
font: 10pt "Segoe UI";
|
||||
}
|
||||
|
||||
|
||||
QListWidget {
|
||||
QListWidget, QListView, QTreeView {
|
||||
border-width: 1px;
|
||||
border-radius: 15px;
|
||||
border-style: solid;
|
||||
@@ -87,17 +79,24 @@ QListWidget {
|
||||
background-color: rgba(100, 100, 100, 0);
|
||||
font: 10pt "Segoe UI";
|
||||
}
|
||||
QListWidget:item {
|
||||
QListWidget:item, QListView:item, QTreeView:item {
|
||||
background-color: rgba(36, 36, 36, 0);
|
||||
selection-color: white;
|
||||
}
|
||||
QListWidget:item:hover {
|
||||
QListWidget:item:hover, QListView:item:hover, QTreeView:item:hover {
|
||||
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);
|
||||
}
|
||||
|
||||
QTreeView::branch:has-children:closed {
|
||||
image: url(":/img/img/down.svg");
|
||||
}
|
||||
|
||||
QTreeView::branch:has-children:open {
|
||||
image: url(":/img/img/up.svg");
|
||||
}
|
||||
|
||||
QComboBox
|
||||
{
|
||||
@@ -108,33 +107,28 @@ QComboBox
|
||||
background-color: rgba(44, 45, 46, 0);
|
||||
color: white;
|
||||
}
|
||||
|
||||
QComboBox::disabled
|
||||
{
|
||||
background-color: rgba(67, 67, 67, 0);
|
||||
color: #656565;
|
||||
color: rgba(101, 101, 101, 1);;
|
||||
border-color: rgba(67, 67, 67);
|
||||
}
|
||||
|
||||
QComboBox:hover
|
||||
{
|
||||
background-color: rgba(50, 50, 50, 0);
|
||||
}
|
||||
|
||||
QComboBox:on
|
||||
{
|
||||
background-color: rgba(67, 67, 67, 0);
|
||||
}
|
||||
|
||||
QComboBox QAbstractItemView
|
||||
{
|
||||
background-color: rgba(67, 67, 67, 0);
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
selection-background-color: rgba(119, 119, 119, 0);
|
||||
selection-color: white;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
QComboBox::drop-down
|
||||
{
|
||||
subcontrol-origin: padding;
|
||||
@@ -142,11 +136,10 @@ QComboBox::drop-down
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
|
||||
QTabBar::tab
|
||||
{
|
||||
background-color: rgba(44, 45, 46, 0);
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-top-left-radius: 3px;
|
||||
@@ -154,26 +147,23 @@ QTabBar::tab
|
||||
border-color: rgba(48, 48, 48);
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
QTabBar::tab:disabled
|
||||
{
|
||||
background-color: rgba(101, 101, 101, 0);
|
||||
color: #656565;
|
||||
color: rgba(101, 101, 101, 1);;
|
||||
}
|
||||
|
||||
QTabWidget::pane
|
||||
{
|
||||
background-color: rgba(160, 160, 160, 0);
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
border: 3px solid;
|
||||
border-radius: 15px;
|
||||
border-color: rgba(28, 28, 28);
|
||||
}
|
||||
|
||||
QTabBar::tab:selected
|
||||
{
|
||||
background-color: rgba(38, 39, 40, 0);
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-top-left-radius: 3px;
|
||||
@@ -181,83 +171,68 @@ QTabBar::tab:selected
|
||||
border-color: rgba(48, 48, 48);
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
QTabBar::tab:selected:disabled
|
||||
{
|
||||
background-color: rgba(64, 64, 64, 0);
|
||||
color: #656565;
|
||||
color: rgba(101, 101, 101, 1);
|
||||
}
|
||||
|
||||
QTabBar::tab:!selected
|
||||
{
|
||||
background-color: rgba(38, 38, 38, 0);
|
||||
}
|
||||
|
||||
QTabBar::tab:!selected:hover
|
||||
{
|
||||
background-color: rgba(50, 50, 50, 0);
|
||||
}
|
||||
|
||||
QTabBar::tab:top:!selected
|
||||
{
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
QTabBar::tab:bottom:!selected
|
||||
{
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
QTabBar::tab:top, QTabBar::tab:bottom
|
||||
{
|
||||
min-width: 8ex;
|
||||
margin-right: -1px;
|
||||
padding: 5px 10px 5px 10px;
|
||||
}
|
||||
|
||||
QTabBar::tab:top:selected
|
||||
{
|
||||
border-bottom-color: none;
|
||||
}
|
||||
|
||||
QTabBar::tab:bottom:selected
|
||||
{
|
||||
border-top-color: none;
|
||||
}
|
||||
|
||||
QTabBar::tab:top:last, QTabBar::tab:bottom:last,
|
||||
QTabBar::tab:top:only-one, QTabBar::tab:bottom:only-one
|
||||
{
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
QTabBar::tab:left:!selected
|
||||
{
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
QTabBar::tab:right:!selected
|
||||
{
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
QTabBar::tab:left, QTabBar::tab:right
|
||||
{
|
||||
min-height: 8ex;
|
||||
margin-bottom: -1px;
|
||||
padding: 10px 5px 10px 5px;
|
||||
}
|
||||
|
||||
QTabBar::tab:left:selected
|
||||
{
|
||||
border-left-color: none;
|
||||
}
|
||||
|
||||
QTabBar::tab:right:selected
|
||||
{
|
||||
border-right-color: none;
|
||||
}
|
||||
|
||||
QTabBar::tab:left:last, QTabBar::tab:right:last,
|
||||
QTabBar::tab:left:only-one, QTabBar::tab:right:only-one
|
||||
{
|
||||
@@ -336,21 +311,22 @@ QListWidget:item:selected {
|
||||
|
||||
centralwidget_g = """
|
||||
QWidget {
|
||||
background-color: rgb(30, 30, 30);
|
||||
color: rgb(255, 255, 255);
|
||||
background-color: #1e1e1e;
|
||||
color: white;
|
||||
font: 10pt "Segoe UI";
|
||||
}
|
||||
|
||||
QScrollBar:vertical,
|
||||
QScrollBar:horizontal {
|
||||
border: none;
|
||||
background: rgb(30, 30, 30);
|
||||
background: #1e1e1e;
|
||||
width: 10px;
|
||||
margin: 15px 0 15px 0;
|
||||
border-radius: 0px;
|
||||
}
|
||||
QScrollBar::handle:vertical,
|
||||
QScrollBar::handle:horizontal {
|
||||
background-color: rgb(139, 139, 139);
|
||||
background-color: #8b8b8b;
|
||||
min-height: 30px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
@@ -358,7 +334,7 @@ QScrollBar::handle:vertical:hover,
|
||||
QScrollBar::handle:vertical:pressed,
|
||||
QScrollBar::handle:horizontal:hover,
|
||||
QScrollBar::handle:horizontal:pressed {
|
||||
background-color: rgb(149, 149, 149);
|
||||
background-color: #959595;
|
||||
}
|
||||
QScrollBar::sub-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 {
|
||||
background: none;
|
||||
}
|
||||
|
||||
QPushButton {
|
||||
color: white;
|
||||
border-width: 1px;
|
||||
@@ -391,6 +368,7 @@ QPushButton:disabled {
|
||||
background-color: #434343;
|
||||
border-color: #0000;
|
||||
}
|
||||
|
||||
QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
|
||||
border-width: 1px;
|
||||
border-radius: 5px;
|
||||
@@ -399,7 +377,8 @@ QLineEdit, QTextBrowser, QPlainTextEdit, QTextEdit {
|
||||
background-color: #242424;
|
||||
font: 10pt "Segoe UI";
|
||||
}
|
||||
QListWidget {
|
||||
|
||||
QListWidget, QListView, QTreeView {
|
||||
border-width: 1px;
|
||||
border-radius: 15px;
|
||||
border-style: solid;
|
||||
@@ -408,16 +387,25 @@ QListWidget {
|
||||
background-color: #242424;
|
||||
font: 10pt "Segoe UI";
|
||||
}
|
||||
QListWidget:item {
|
||||
QListWidget:item, QListView:item, QTreeView:item {
|
||||
background-color: #242424;
|
||||
selection-color: white;
|
||||
}
|
||||
QListWidget:item:hover {
|
||||
QListWidget:item:hover, QListView:item:hover, QTreeView:item:hover {
|
||||
background-color: #323232;
|
||||
}
|
||||
QListWidget:item:selected {
|
||||
QListWidget:item:selected, QListView:item:selected, QTreeView:item:selected {
|
||||
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
|
||||
{
|
||||
border-width: 1px;
|
||||
@@ -425,7 +413,7 @@ QComboBox
|
||||
border-style: solid;
|
||||
border-color: #303030;
|
||||
background-color: #2c2d2e;
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
}
|
||||
QComboBox::disabled
|
||||
{
|
||||
@@ -444,7 +432,7 @@ QComboBox:on
|
||||
QComboBox QAbstractItemView
|
||||
{
|
||||
background-color: #434343;
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
selection-background-color: #777777;
|
||||
selection-color: white;
|
||||
outline: 0;
|
||||
@@ -455,10 +443,11 @@ QComboBox::drop-down
|
||||
subcontrol-position: top right;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
QTabBar::tab
|
||||
{
|
||||
background-color: #2c2d2e;
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-top-left-radius: 3px;
|
||||
@@ -474,7 +463,7 @@ QTabBar::tab:disabled
|
||||
QTabWidget::pane
|
||||
{
|
||||
background-color: #a0a0a0;
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
border: 3px solid;
|
||||
border-radius: 15px;
|
||||
border-color: #1c1c1c;
|
||||
@@ -482,7 +471,7 @@ QTabWidget::pane
|
||||
QTabBar::tab:selected
|
||||
{
|
||||
background-color: #262728;
|
||||
color: #ffffff;
|
||||
color: white;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-top-left-radius: 3px;
|
||||
@@ -618,7 +607,7 @@ QListWidget:item {
|
||||
padding-left: 12px;
|
||||
height: 60px;
|
||||
background-color: #191919;
|
||||
selection-color: rgba(255, 255, 255);
|
||||
selection-color: white;
|
||||
}
|
||||
QListWidget:item:hover {
|
||||
background-color: #323232;
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
from .settings import Config
|
||||
from .paths import PathsConfig
|
||||
|
||||
@@ -13,3 +13,10 @@ class ConfigModel:
|
||||
out_micro: str
|
||||
restream: 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
43
modules/config/paths.py
Normal 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
|
||||
Reference in New Issue
Block a user