commit 4125b04962697decc6d87e7bc7a437be5125adc7
parent f31fc3891a2be5e90c6856ba547c82eb494dbff0
Author: gearsix <gearsix@tuta.io>
Date: Sat, 31 Jul 2021 19:33:12 +0100
stripped gui - moving to seperate repo
Diffstat:
5 files changed, 1 insertion(+), 240 deletions(-)
diff --git a/README.txt b/README.txt
@@ -80,9 +80,6 @@ INSTALL
If you'd like to use sya from the CLI, then "cd" into the the sya directory
and run "sudo make install"
-CREDITS
- - MicroMoon theme for Palemoon, from which I borrowed the icons used
-
AUTHORS
- gearsix <gearsix@tuta.io>
diff --git a/folder.png b/folder.png
Binary files differ.
diff --git a/gui.py b/gui.py
@@ -1,224 +0,0 @@
-#!/usr/bin/env python3
-
-# std
-import os
-import sys
-import subprocess
-# pip
-import PyQt5.QtCore as pyqt_core
-import PyQt5.QtWidgets as pyqt_widgets
-import PyQt5.QtGui as pyqt_gui
-
-def resource_path(relative_path):
- try:
- base_path = sys._MEIPASS
- except Exception:
- base_path = os.path.abspath(".")
- print(os.path.join(base_path, relative_path))
- return os.path.join(base_path, relative_path)
-
-def centerWidget(widget):
- sg = pyqt_widgets.QDesktopWidget().screenGeometry()
- wg = widget.geometry()
- return pyqt_core.QPoint(sg.width() / 2 - wg.width() / 2, sg.height() / 2 - wg.height() / 2)
-
-class LogStream(pyqt_core.QObject):
- txt = pyqt_core.pyqtSignal(str)
-
- def write(self, txt):
- self.txt.emit(str(txt))
-
-class SyaGuiMain(pyqt_core.QThread):
- def __init__(self, fn, args=None):
- super().__init__()
- self.fn = fn
- self.args = args
-
- def run(self):
- if self.args != None:
- self.fn(self.args)
- else:
- self.fn()
-
-class SyaGui(pyqt_widgets.QMainWindow):
- def __init__(self, fnSya, args):
- super().__init__()
-
- self.args = args
- self.fnSya = fnSya
-
- self._edits = {}
- options = pyqt_widgets.QWidget()
- options.setWindowTitle('sya')
- options = self._init_options(options)
- #options.setWindowIcon(pyqt_options.QIcon(''))
- options.move(centerWidget(options))
- self._options = options
-
- logs = pyqt_widgets.QWidget()
- logs.resize(800, 400)
- logs = self._init_logs(logs)
- logs.move(centerWidget(logs))
- self._logs = logs
-
- sys.stdout = LogStream(txt=self.log)
- self._options.show()
-
- def _init_options(self, options):
- layout = pyqt_widgets.QGridLayout()
- # tracklist
- self._tracklistLabel = 'Tracklist:'
- layout.addLayout(self._init_filepicker(options, self._tracklistLabel,
- self._filepicker_tracklist, self.args.tracklist), 0, 0, 1, 3)
- # formats
- formats = ['mp3', 'flv', 'wav', 'ogg', 'aac']
- layout.addLayout(self._init_combobox(options, 'Format:', self._set_format, formats,
- self.args.format), 1, 0)
- # quality
- qualities = ['0 (better)', '1', '2', '3', '4', '5', '6', '7', '8', '9 (worse)']
- layout.addLayout(self._init_combobox(options, 'Quality:', self._set_quality, qualities,
- self.args.quality), 2, 0)
- # keep
- keep = pyqt_widgets.QCheckBox('keep original', options)
- if self.args.keep == True:
- keep.setChecked(True)
- keep.toggled.connect(self._keep_toggle, self.args.keep)
- layout.addWidget(keep, 1, 1, 2, 1)
- # output
- self._outputLabel = 'Output:'
- layout.addLayout(self._init_filepicker(options, self._outputLabel, self._filepicker_output,
- self.args.output), 3, 0, 1, 3)
- # quit
- quit_btn = pyqt_widgets.QPushButton('Quit')
- quit_btn.clicked.connect(sys.exit)
- layout.addWidget(quit_btn, 4, 1)
- # ok
- self._ok_btn = pyqt_widgets.QPushButton('OK')
- self._ok_btn.clicked.connect(self._ok)
- layout.addWidget(self._ok_btn, 4, 2)
- self._check_ok()
-
- options.setLayout(layout)
- return options
-
- def _init_logs(self, logs):
- layout = pyqt_widgets.QGridLayout()
- # textbox
- logbox = pyqt_widgets.QPlainTextEdit()
- logbox.setReadOnly(True)
- self._logbox = logbox
- layout.addWidget(logbox, 1, 0, 1, 5)
- # cancel
- cancel_btn = pyqt_widgets.QPushButton('Cancel')
- cancel_btn.clicked.connect(self.cancel)
- layout.addWidget(cancel_btn, 2, 0)
- # warning
- warning = pyqt_widgets.QLabel('Be patient, this might take a while.')
- layout.addWidget(warning, 2, 1, 1, 2)
- # done
- self._done_btn = pyqt_widgets.QPushButton('Done')
- self._done_btn.clicked.connect(sys.exit)
- self._done_btn.setEnabled(False)
- layout.addWidget(self._done_btn, 2, 4)
-
- logs.setLayout(layout)
- return logs
-
- def _init_filepicker(self, widget, labelText, filepickerFn, default=None):
- layout = pyqt_widgets.QHBoxLayout()
- # label
- label = pyqt_widgets.QLabel(labelText, widget)
- layout.addWidget(label)
- # line edit
- self._edits[labelText] = pyqt_widgets.QLineEdit(widget)
- if default != None:
- self._edits[labelText].setText(default)
- layout.addWidget(self._edits[labelText])
- # filepicker btn
- button_logo = pyqt_gui.QIcon(resource_path('folder.png'))
- button = pyqt_widgets.QPushButton(button_logo, '', widget)
- button.clicked.connect(filepickerFn)
- layout.addWidget(button)
-
- return layout
-
- def _init_combobox(self, widget, label, setFn, options, default):
- layout = pyqt_widgets.QHBoxLayout()
- # label
- label = pyqt_widgets.QLabel(label, widget)
- layout.addWidget(label)
- # combobox
- combo = pyqt_widgets.QComboBox(widget)
- for opt in options:
- combo.addItem(opt)
- if default in options:
- combo.setCurrentIndex(options.index(default))
- combo.activated[str].connect(setFn)
- layout.addWidget(combo)
-
- layout.setStretch(0, 2)
- return layout
-
- def _filepicker_tracklist(self, signal):
- file = pyqt_widgets.QFileDialog.getOpenFileName(self._options,
- 'Select a tracklist', os.path.expanduser("~"), "Plain-Text file (*.txt)")
- if len(file) > 0:
- self.args.tracklist = file[0]
- self._edits[self._tracklistLabel].setText(self.args.tracklist)
- if len(self._edits[self._outputLabel].text()) == 0:
- self.args.output = os.path.splitext(self.args.tracklist)[0]
- self._edits[self._outputLabel].setText(self.args.output)
- self._check_ok()
-
- def _filepicker_output(self, signal):
- file = pyqt_widgets.QFileDialog.getExistingDirectory(self._options,
- 'Select directory', os.path.expanduser('~'))
- if len(file) > 0:
- self.args.output = file
- self._edits[self._outputLabel].setText(file)
- self._check_ok()
-
- def _set_format(self, format):
- self.args.format = format
-
- def _set_quality(self, quality):
- self.args.quality = quality[0]
-
- def _keep_toggle(self):
- self.args.keep = not self.args.keep
-
- def _check_ok(self):
- if self.args.tracklist != None and self.args.output != None and \
- os.path.exists(self.args.tracklist) and len(self.args.output) > 0:
- self._ok_btn.setEnabled(True)
- else:
- self._ok_btn.setEnabled(False)
-
- def _ok(self):
- del(self._options)
- del(self._ok_btn)
- self._logs.show()
- self.start_main()
-
- def log(self, msg):
- cursor = self._logbox.textCursor()
- cursor.insertText(msg)
- self._logbox.setTextCursor(cursor)
- self._logbox.ensureCursorVisible()
-
- def start_main(self):
- self.main_t = SyaGuiMain(self.fnSya, args=self.args)
- self.check_t = SyaGuiMain(self._check_done)
- self.main_t.start()
- self.check_t.start()
-
- def _check_done(self):
- while self.main_t.isFinished() != True:
- continue
- self._done_btn.setEnabled(True)
-
- def cancel(self):
- self.main_t.exit()
- self.check_t.exit()
- sys.exit()
-
diff --git a/question.png b/question.png
Binary files differ.
diff --git a/sya.py b/sya.py
@@ -6,10 +6,6 @@ import subprocess
import re
import os
import sys
-# sya
-import gui
-# pip
-import PyQt5.QtWidgets as pyqt_widgets
Timestamp = re.compile('[\[,\(]?(:?\d{1,2}){3}[\],\)]?')
@@ -47,8 +43,6 @@ def parse_args():
help='path of the "ffmpeg" binary to use')
parser.add_argument('-k', '--keep', action='store_true',
help='keep any files removed during processing (full video/audio file)')
- parser.add_argument('-g', '--gui', action='store_true',
- help='run the gui for configuring options')
return parser.parse_args()
def check_bin(*binaries):
@@ -157,10 +151,4 @@ def sya(args):
log('success')
if __name__ == '__main__':
- args = parse_args()
- if args.gui:
- app = pyqt_widgets.QApplication(sys.argv)
- options = gui.SyaGui(sya, args)
- sys.exit(app.exec_())
- else:
- sya(args)
+ sya(parse_args())