SDC/main.py

52 lines
1.5 KiB
Python
Executable file

#!/usr/bin/python
import subprocess
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel
from PyQt6.QtGui import QFont
from PyQt6.QtCore import Qt
class SDGUI(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 1280, 720)
self.setWindowTitle('SD GUI')
# Start SD
self.proc = subprocess.Popen(
[sys.path[0] + '/sd', *sys.argv[1:], '-n'], stdin=subprocess.PIPE, stdout=subprocess.PIPE
)
# Display key
key = self.proc.stdout.readline().decode('utf-8')
self.label = QLabel(key, self)
self.label.setFont(QFont('Arial', 48))
self.label.setWordWrap(True)
self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.setCentralWidget(self.label)
def keyPressEvent(self, event):
if self.label.text().count('\n') == 2 and event.text() not in 'yn':
# Manually quit here because stdout.readline blocks and doesn't error when SD exits
self.close()
# Write to SD
self.proc.stdin.write((event.text() + '\n').encode('utf-8'))
self.proc.stdin.flush()
# Get response
text = self.proc.stdout.readline().decode('utf-8')
if text.startswith('>'):
# Key
self.label.setText(text)
else:
# Value
self.label.setText(self.label.text() + text)
app = QApplication(sys.argv)
window = SDGUI()
window.show()
app.exec()