Fbrowser/maintest.py

148 lines
4.8 KiB
Python

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
import sys
import os
from PyQt6.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton,
QTreeView, QLabel, QStyle, QFileDialog, QHBoxLayout, QLineEdit, QProgressBar)
from PyQt6.QtCore import Qt, QDir, QTimer
from PyQt6.QtGui import QStandardItemModel, QStandardItem
from testmid import MidPlay
from ScanOrg100 import Organizer
from timer_m import Timer_Ui
class Fbrowser(QMainWindow):
def __init__(self):
super().__init__()
self.midplay = None
self.current_path = QDir.homePath()
self.organizer = Organizer()
self.init_ui()
self.timer = Timer_Ui()
def init_ui(self):
self.setWindowTitle('File Browser')
central_widget = QWidget()
layout = QVBoxLayout(central_widget)
# Address bar
address_layout = QHBoxLayout()
self.address_bar = QLineEdit(self.current_path)
self.address_bar.returnPressed.connect(self.navigate_to_address)
address_layout.addWidget(self.address_bar)
# Navigation buttons
back_button = QPushButton('Back')
back_button.clicked.connect(self.go_back)
address_layout.addWidget(back_button)
layout.addLayout(address_layout)
# Add a progress bar
self.progress_bar = QProgressBar()
layout.addWidget(self.progress_bar)
# File view
self.file_model = QStandardItemModel()
self.file_tree = QTreeView()
self.file_tree.setModel(self.file_model)
self.file_tree.doubleClicked.connect(self.on_item_double_clicked)
layout.addWidget(self.file_tree)
# MidPlay button
open_midplay_button = QPushButton('Open MidPlay')
open_midplay_button.clicked.connect(self.open_midplay)
layout.addWidget(open_midplay_button)
self.setCentralWidget(central_widget)
self.resize(800, 600)
# Timer Button
self.timer_button = QPushButton('Start Timer')
self.timer_button.clicked.connect(self.open_timer)
layout.addWidget(self.timer_button)
self.scan_current_directory()
def scan_current_directory(self):
self.organizer.start_scan(self.current_path)
self.progress_bar.setRange(0, 0) # Indeterminate progress
self.organizer.scanner.scan_complete.connect(self.scan_finished)
def scan_finished(self):
self.progress_bar.setRange(0, 100)
self.progress_bar.setValue(100)
self.update_file_tree()
def navigate_to_address(self):
new_path = self.address_bar.text()
if os.path.isdir(new_path):
self.current_path = new_path
self.scan_current_directory()
else:
self.address_bar.setText(self.current_path)
def update_file_tree(self):
self.file_model.clear()
self.file_model.setHorizontalHeaderLabels(['Name'])
root = self.file_model.invisibleRootItem()
# Add directories
for path in self.organizer.dir_list:
name = os.path.basename(path)
item = QStandardItem(name)
item.setData(path, Qt.ItemDataRole.UserRole)
item.setIcon(self.style().standardIcon(QStyle.StandardPixmap.SP_DirIcon))
root.appendRow(item)
# Add files
for path in self.organizer.file_list:
name = os.path.basename(path)
item = QStandardItem(name)
item.setData(path, Qt.ItemDataRole.UserRole)
item.setIcon(self.style().standardIcon(QStyle.StandardPixmap.SP_FileIcon))
root.appendRow(item)
self.file_tree.sortByColumn(0, Qt.SortOrder.AscendingOrder)
def on_item_double_clicked(self, index):
item = self.file_model.itemFromIndex(index)
path = item.data(Qt.ItemDataRole.UserRole)
if os.path.isdir(path):
self.current_path = path
self.address_bar.setText(path)
self.scan_current_directory()
else:
self.play_file(path)
def playingcheck_and_stop(self):
if self.midplay.is_playing():
self.midplay.stop()
def play_file(self, file_path):
if not self.midplay:
self.midplay = MidPlay()
#self.midplay.showUI()
self.midplay.add_to_playlist(file_path)
def go_back(self):
parent_dir = os.path.dirname(self.current_path)
if parent_dir != self.current_path:
self.current_path = parent_dir
self.address_bar.setText(parent_dir)
self.scan_current_directory()
def open_midplay(self):
if not self.midplay:
self.midplay = MidPlay()
self.midplay.showUI()
def open_timer(self):
self.timer.showUI()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Fbrowser()
ex.show()
sys.exit(app.exec())