52 lines
1.5 KiB
Python
Executable file
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()
|