Added file explorer
This commit is contained in:
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)
|
||||
Reference in New Issue
Block a user