diff --git a/src/api/api_server.py b/src/api/api_server.py index 0eb87a8..4258c68 100755 --- a/src/api/api_server.py +++ b/src/api/api_server.py @@ -489,6 +489,15 @@ def get_renderer_args(renderer): return f"Cannot find renderer '{renderer}'", 400 +@server.get('/api/renderer//help') +def get_renderer_help(renderer): + try: + renderer_engine_class = EngineManager.engine_with_name(renderer) + return renderer_engine_class().get_help() + except LookupError: + return f"Cannot find renderer '{renderer}'", 400 + + @server.route('/upload') def upload_file_page(): return render_template('upload.html', supported_renderers=EngineManager.supported_engines()) diff --git a/src/ui/add_job.py b/src/ui/add_job.py index 7c441bc..e2aae29 100644 --- a/src/ui/add_job.py +++ b/src/ui/add_job.py @@ -10,6 +10,7 @@ from PyQt6.QtWidgets import ( from src.api.server_proxy import RenderServerProxy from src.engines.engine_manager import EngineManager +from src.ui.engine_help_viewer import EngineHelpViewer from src.utilities.zeroconf_server import ZeroconfServer @@ -18,6 +19,7 @@ class NewRenderJobForm(QWidget): super().__init__() # UI + self.engine_help_viewer = None self.raw_args = None self.submit_progress_label = None self.submit_progress = None @@ -217,8 +219,10 @@ class NewRenderJobForm(QWidget): self.output_path_input.setText(directory) def args_help_button_clicked(self): - #todo: create a popup window showing args - pass + url = (f'http://{self.server_proxy.hostname}:{self.server_proxy.port}/api/renderer/' + f'{self.renderer_type.currentText()}/help') + self.engine_help_viewer = EngineHelpViewer(url) + self.engine_help_viewer.show() # -------- Update -------- @@ -271,6 +275,7 @@ class NewRenderJobForm(QWidget): callback=create_callback) self.submit_progress.setMaximum(0) + # todo: error handle print(result.json()) self.submit_button.setHidden(False) self.submit_progress.setHidden(True) diff --git a/src/ui/engine_help_viewer.py b/src/ui/engine_help_viewer.py new file mode 100644 index 0000000..bf76976 --- /dev/null +++ b/src/ui/engine_help_viewer.py @@ -0,0 +1,30 @@ +import requests +from PyQt6.QtGui import QFont +from PyQt6.QtWidgets import QMainWindow, QVBoxLayout, QWidget, QPlainTextEdit + + +class EngineHelpViewer(QMainWindow): + def __init__(self, log_path): + super().__init__() + + self.help_path = log_path + self.setGeometry(100, 100, 600, 800) + self.setWindowTitle("Help 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) + + self.fetch_help() + + def fetch_help(self): + result = requests.get(self.help_path) + self.text_edit.setPlainText(result.text)