New UI Redesign in pyqt6 (#56)

* Initial commit for new UI

* Initial commit for new UI

* WIP

* Status bar updates and has an icon for online / offline

* Add log_viewer.py

* Use JSON for delete_engine_download API

* Fix class issue with Downloaders

* Move Config class to new ui

* Add engine_browser.py

* Add a close event handler to the main window

* Fix issue with engine manager not deleting engines properly

* Rearrange all the files

* Add icons and resources

* Cache system info in RenderServerProxy

* Toolbar polish

* Fix resource path in status bar

* Add config_dir to misc_helper.py

* Add try block to zeroconf setup

* Add add_job.py

* Add raw args to add_job.py
This commit is contained in:
2023-11-04 09:52:15 -05:00
committed by GitHub
parent bc8e88ea59
commit 65c256b641
45 changed files with 1491 additions and 53 deletions

60
src/ui/console.py Normal file
View File

@@ -0,0 +1,60 @@
import sys
import logging
from PyQt6.QtGui import QFont
from PyQt6.QtWidgets import QMainWindow, QVBoxLayout, QWidget, QPlainTextEdit
from PyQt6.QtCore import pyqtSignal, QObject
# Create a custom logging handler that emits a signal
class QSignalHandler(logging.Handler, QObject):
new_record = pyqtSignal(str)
def __init__(self):
logging.Handler.__init__(self)
QObject.__init__(self)
def emit(self, record):
msg = self.format(record)
self.new_record.emit(msg) # Emit signal
class ConsoleWindow(QMainWindow):
def __init__(self, buffer_handler):
super().__init__()
self.buffer_handler = buffer_handler
self.log_handler = None
self.init_ui()
self.init_logging()
def init_ui(self):
self.setGeometry(100, 100, 600, 800)
self.setWindowTitle("Log Output")
self.text_edit = QPlainTextEdit(self)
self.text_edit.setReadOnly(True)
self.text_edit.setFont(QFont("Courier", 10))
layout = QVBoxLayout()
layout.addWidget(self.text_edit)
layout.setContentsMargins(0, 0, 0, 0)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
def init_logging(self):
self.buffer_handler.new_record.connect(self.append_log_record)
# Display all messages that were buffered before the window was opened
for record in self.buffer_handler.get_buffer():
self.text_edit.appendPlainText(record)
self.log_handler = QSignalHandler()
# self.log_handler.new_record.connect(self.append_log_record)
self.log_handler.setFormatter(self.buffer_handler.formatter)
logging.getLogger().addHandler(self.log_handler)
logging.getLogger().setLevel(logging.INFO)
def append_log_record(self, record):
self.text_edit.appendPlainText(record)