jameson512
Upload files via LFS
1f235c3
Raw
History Blame Contribute Delete
5.02 kB
# -*- coding: utf-8 -*-
import os
from PySide6.QtGui import Qt
from PySide6.QtWidgets import QFileDialog, QPushButton, QPlainTextEdit
from videotrans.configure.config import tr, params
from videotrans.configure import contants
class DropButton(QPushButton):
def __init__(self, text=""):
super(DropButton, self).__init__(text)
self.setAcceptDrops(True)
self.clicked.connect(self.get_file)
self.filelist = []
self.setCursor(Qt.PointingHandCursor)
def get_file(self):
format_str = " ".join(['*.' + f for f in contants.VIDEO_EXTS + contants.AUDIO_EXITS])
fnames, _ = QFileDialog.getOpenFileNames(self, tr('xuanzeyinpinwenjian'),
params['last_opendir'],
filter=f"Video/Audio files({format_str})")
namestr = []
for (i, it) in enumerate(fnames):
fnames[i] = it.replace('\\', '/')
namestr.append(os.path.basename(it))
params['last_opendir']=os.path.dirname(it)
self.filelist = fnames
self.setText(f'{len(self.filelist)} files \n' + "\n".join(namestr))
def dragEnterEvent(self, event):
files = event.mimeData().text().strip().lower()
allow = True
for it in files.split("\n"):
if it.split('.')[-1] not in contants.VIDEO_EXTS + contants.AUDIO_EXITS:
allow = False
break
if allow:
event.accept()
else:
event.ignore()
def dropEvent(self, event):
filepath = event.mimeData().text().strip().split("\n")
self.filelist = [file.replace('file:///', '') for file in filepath]
self.setText(f'{len(self.filelist)} files')
class PeiyinDropButton(QPushButton):
def __init__(self, text=""):
super(PeiyinDropButton, self).__init__(text)
self.setAcceptDrops(True)
self.clicked.connect(self.get_file)
self.filelist = []
self.setCursor(Qt.PointingHandCursor)
def get_file(self):
fnames, _ = QFileDialog.getOpenFileNames(self, "Select srt/txt", params['last_opendir'],
"Text files(*.srt *.txt)")
namestr = []
for (i, it) in enumerate(fnames):
fnames[i] = it.replace('\\', '/')
namestr.append(os.path.basename(it))
params['last_opendir']=os.path.dirname(it)
self.filelist = fnames
self.setText(f'{len(self.filelist)} files \n' + "\n".join(namestr))
def dragEnterEvent(self, event):
files = event.mimeData().text().strip().lower()
allow = True
for it in files.split("\n"):
if it.split('.')[-1] not in ['srt','txt']:
allow = False
break
if allow:
event.accept()
else:
event.ignore()
def dropEvent(self, event):
filepath = event.mimeData().text().strip().split("\n")
self.filelist = [file.replace('file:///', '') for file in filepath]
self.setText(f'{len(self.filelist)} files')
# 文本框 获取内容
class Textedit(QPlainTextEdit):
def __init__(self):
super(Textedit, self).__init__()
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
ext = event.mimeData().text().lower().split('.')
if len(ext) > 0 and ext[-1] in ["txt", "srt"]:
event.accept()
else:
event.ignore()
def dropEvent(self, event):
filepath = event.mimeData().text().replace('file:///', '')
with open(filepath, 'r', encoding="utf-8") as f:
self.setPlainText(f.read().strip())
def setText(self, filepath=None):
try:
with open(filepath, 'r', encoding="utf-8") as f:
self.setPlainText(f.read().strip())
except Exception:
with open(filepath, 'r', encoding="GBK") as f:
self.setPlainText(f.read().strip())
class TextGetdir(QPlainTextEdit):
def __init__(self):
super(TextGetdir, self).__init__()
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
files = event.mimeData().text().split("\n")
result = []
for it in files:
if it != "" and it.split('.')[-1] in contants.VIDEO_EXTS + contants.AUDIO_EXITS:
result.append(it)
if len(result) > 0:
event.acceptProposedAction()
else:
event.ignore()
def dropEvent(self, event):
files = event.mimeData().text().split("\n")
result = []
if self.toPlainText().strip():
result = self.toPlainText().strip().split("\n")
for it in files:
if it != "" and it.split('.')[-1] in contants.VIDEO_EXTS + contants.AUDIO_EXITS:
f = it.replace('file:///', '')
if f not in result:
result.append(f)
self.setPlainText("\n".join(result))