Rename renderers to engines (#123)

* Bulk rename
* Fix build issues
This commit is contained in:
2025-12-27 18:53:09 -06:00
committed by GitHub
parent 574c6f0755
commit daf445ee9e
23 changed files with 367 additions and 157 deletions

View File

@@ -14,7 +14,7 @@ from requests import Response
from src.api.server_proxy import RenderServerProxy
from src.engines.engine_manager import EngineManager
from src.ui.engine_help_viewer import EngineHelpViewer
from src.ui.engine_help_window import EngineHelpViewer
from src.utilities.zeroconf_server import ZeroconfServer
@@ -24,7 +24,7 @@ class NewRenderJobForm(QWidget):
self.notes_group = None
self.frame_rate_input = None
self.resolution_x_input = None
self.renderer_group = None
self.engine_group = None
self.output_settings_group = None
self.resolution_y_input = None
self.project_path = project_path
@@ -34,17 +34,17 @@ class NewRenderJobForm(QWidget):
self.load_file_group = None
self.current_engine_options = None
self.file_format_combo = None
self.renderer_options_layout = None
self.engine_options_layout = None
self.cameras_list = None
self.cameras_group = None
self.renderer_version_combo = None
self.engine_version_combo = None
self.worker_thread = None
self.msg_box = None
self.engine_help_viewer = None
self.raw_args = None
self.submit_progress_label = None
self.submit_progress = None
self.renderer_type = None
self.engine_type = None
self.process_label = None
self.process_progress_bar = None
self.splitjobs_same_os = None
@@ -62,13 +62,13 @@ class NewRenderJobForm(QWidget):
# Job / Server Data
self.server_proxy = RenderServerProxy(socket.gethostname())
self.renderer_info = None
self.engine_info = None
self.project_info = None
# Setup
self.setWindowTitle("New Job")
self.setup_ui()
self.update_renderer_info()
self.update_engine_info()
self.setup_project()
# get renderer info in bg thread
@@ -182,33 +182,33 @@ class NewRenderJobForm(QWidget):
# add group to layout
main_layout.addWidget(self.output_settings_group)
# Renderer Group
self.renderer_group = QGroupBox("Renderer Settings")
renderer_group_layout = QVBoxLayout(self.renderer_group)
renderer_layout = QHBoxLayout()
renderer_layout.addWidget(QLabel("Renderer:"))
self.renderer_type = QComboBox()
self.renderer_type.currentIndexChanged.connect(self.renderer_changed)
renderer_layout.addWidget(self.renderer_type)
# Engine Group
self.engine_group = QGroupBox("Engine Settings")
engine_group_layout = QVBoxLayout(self.engine_group)
engine_layout = QHBoxLayout()
engine_layout.addWidget(QLabel("Engine:"))
self.engine_type = QComboBox()
self.engine_type.currentIndexChanged.connect(self.engine_changed)
engine_layout.addWidget(self.engine_type)
# Version
renderer_layout.addWidget(QLabel("Version:"))
self.renderer_version_combo = QComboBox()
self.renderer_version_combo.addItem('latest')
renderer_layout.addWidget(self.renderer_version_combo)
renderer_group_layout.addLayout(renderer_layout)
engine_layout.addWidget(QLabel("Version:"))
self.engine_version_combo = QComboBox()
self.engine_version_combo.addItem('latest')
engine_layout.addWidget(self.engine_version_combo)
engine_group_layout.addLayout(engine_layout)
# dynamic options
self.renderer_options_layout = QVBoxLayout()
renderer_group_layout.addLayout(self.renderer_options_layout)
self.engine_options_layout = QVBoxLayout()
engine_group_layout.addLayout(self.engine_options_layout)
# Raw Args
raw_args_layout = QHBoxLayout(self.renderer_group)
raw_args_layout = QHBoxLayout(self.engine_group)
raw_args_layout.addWidget(QLabel("Raw Args:"))
self.raw_args = QLineEdit()
raw_args_layout.addWidget(self.raw_args)
args_help_button = QPushButton("?")
args_help_button.clicked.connect(self.args_help_button_clicked)
raw_args_layout.addWidget(args_help_button)
renderer_group_layout.addLayout(raw_args_layout)
main_layout.addWidget(self.renderer_group)
engine_group_layout.addLayout(raw_args_layout)
main_layout.addWidget(self.engine_group)
# Cameras Group
self.cameras_group = QGroupBox("Cameras")
@@ -240,28 +240,28 @@ class NewRenderJobForm(QWidget):
self.submit_progress_label.setHidden(True)
main_layout.addWidget(self.submit_progress_label)
self.toggle_renderer_enablement(False)
self.toggle_engine_enablement(False)
def update_renderer_info(self):
# get the renderer info and add them all to the ui
self.renderer_info = self.server_proxy.get_renderer_info(response_type='full')
self.renderer_type.addItems(self.renderer_info.keys())
# select the best renderer for the file type
def update_engine_info(self):
# get the engine info and add them all to the ui
self.engine_info = self.server_proxy.get_engine_info(response_type='full')
self.engine_type.addItems(self.engine_info.keys())
# select the best engine for the file type
engine = EngineManager.engine_for_project_path(self.project_path)
self.renderer_type.setCurrentText(engine.name().lower())
self.engine_type.setCurrentText(engine.name().lower())
# refresh ui
self.renderer_changed()
self.engine_changed()
def renderer_changed(self):
def engine_changed(self):
# load the version numbers
current_renderer = self.renderer_type.currentText().lower() or self.renderer_type.itemText(0)
self.renderer_version_combo.clear()
self.renderer_version_combo.addItem('latest')
current_engine = self.engine_type.currentText().lower() or self.engine_type.itemText(0)
self.engine_version_combo.clear()
self.engine_version_combo.addItem('latest')
self.file_format_combo.clear()
if current_renderer:
renderer_vers = [version_info['version'] for version_info in self.renderer_info[current_renderer]['versions']]
self.renderer_version_combo.addItems(renderer_vers)
self.file_format_combo.addItems(self.renderer_info[current_renderer]['supported_export_formats'])
if current_engine:
engine_vers = [version_info['version'] for version_info in self.engine_info[current_engine]['versions']]
self.engine_version_combo.addItems(engine_vers)
self.file_format_combo.addItems(self.engine_info[current_engine]['supported_export_formats'])
def update_server_list(self):
clients = ZeroconfServer.found_hostnames()
@@ -278,7 +278,7 @@ class NewRenderJobForm(QWidget):
# UI stuff on main thread
self.process_progress_bar.setHidden(False)
self.process_label.setHidden(False)
self.toggle_renderer_enablement(False)
self.toggle_engine_enablement(False)
output_name, _ = os.path.splitext(os.path.basename(self.scene_file_input.text()))
output_name = output_name.replace(' ', '_')
@@ -296,8 +296,8 @@ class NewRenderJobForm(QWidget):
self.render_name_input.setText(directory)
def args_help_button_clicked(self):
url = (f'http://{self.server_proxy.hostname}:{self.server_proxy.port}/api/renderer/'
f'{self.renderer_type.currentText()}/help')
url = (f'http://{self.server_proxy.hostname}:{self.server_proxy.port}/api/engine/'
f'{self.engine_type.currentText()}/help')
self.engine_help_viewer = EngineHelpViewer(url)
self.engine_help_viewer.show()
@@ -306,20 +306,20 @@ class NewRenderJobForm(QWidget):
def post_get_project_info_update(self):
"""Called by the GetProjectInfoWorker - Do not call directly."""
try:
# Set the best renderer we can find
# Set the best engine we can find
input_path = self.scene_file_input.text()
engine = EngineManager.engine_for_project_path(input_path)
engine_index = self.renderer_type.findText(engine.name().lower())
engine_index = self.engine_type.findText(engine.name().lower())
if engine_index >= 0:
self.renderer_type.setCurrentIndex(engine_index)
self.engine_type.setCurrentIndex(engine_index)
else:
self.renderer_type.setCurrentIndex(0) #todo: find out why we don't have renderer info yet
# not ideal but if we don't have the renderer info we have to pick something
self.engine_type.setCurrentIndex(0) #todo: find out why we don't have engine info yet
# not ideal but if we don't have the engine info we have to pick something
# cleanup progress UI
self.load_file_group.setHidden(True)
self.toggle_renderer_enablement(True)
self.toggle_engine_enablement(True)
# Load scene data
self.start_frame_input.setValue(self.project_info.get('frame_start'))
@@ -347,9 +347,9 @@ class NewRenderJobForm(QWidget):
self.cameras_group.setHidden(True)
# Dynamic Engine Options
clear_layout(self.renderer_options_layout) # clear old options
clear_layout(self.engine_options_layout) # clear old options
# dynamically populate option list
system_info = self.renderer_info.get(engine.name(), {}).get('system_info', {})
system_info = self.engine_info.get(engine.name(), {}).get('system_info', {})
self.current_engine_options = engine.ui_options(system_info=system_info)
for option in self.current_engine_options:
h_layout = QHBoxLayout()
@@ -363,15 +363,15 @@ class NewRenderJobForm(QWidget):
else:
text_box = QLineEdit()
h_layout.addWidget(text_box)
self.renderer_options_layout.addLayout(h_layout)
self.engine_options_layout.addLayout(h_layout)
except AttributeError:
pass
def toggle_renderer_enablement(self, enabled=False):
def toggle_engine_enablement(self, enabled=False):
"""Toggle on/off all the render settings"""
self.project_group.setHidden(not enabled)
self.output_settings_group.setHidden(not enabled)
self.renderer_group.setHidden(not enabled)
self.engine_group.setHidden(not enabled)
self.notes_group.setHidden(not enabled)
if not enabled:
self.cameras_group.setHidden(True)
@@ -386,7 +386,7 @@ class NewRenderJobForm(QWidget):
self.submit_progress_label.setHidden(True)
self.process_progress_bar.setHidden(True)
self.process_label.setHidden(True)
self.toggle_renderer_enablement(True)
self.toggle_engine_enablement(True)
self.msg_box = QMessageBox()
if not error_string:
@@ -450,8 +450,8 @@ class SubmitWorker(QThread):
try:
hostname = self.window.server_input.currentText()
job_json = {'owner': psutil.Process().username() + '@' + socket.gethostname(),
'renderer': self.window.renderer_type.currentText().lower(),
'engine_version': self.window.renderer_version_combo.currentText(),
'engine': self.window.engine_type.currentText().lower(),
'engine_version': self.window.engine_version_combo.currentText(),
'args': {'raw': self.window.raw_args.text(),
'export_format': self.window.file_format_combo.currentText()},
'output_path': self.window.render_name_input.text(),
@@ -464,8 +464,8 @@ class SubmitWorker(QThread):
'name': self.window.render_name_input.text()}
# get the dynamic args
for i in range(self.window.renderer_options_layout.count()):
item = self.window.renderer_options_layout.itemAt(i)
for i in range(self.window.engine_options_layout.count()):
item = self.window.engine_options_layout.itemAt(i)
layout = item.layout() # get the layout
for x in range(layout.count()):
z = layout.itemAt(x)
@@ -497,7 +497,7 @@ class SubmitWorker(QThread):
job_list = [job_json]
# presubmission tasks
engine = EngineManager.engine_with_name(self.window.renderer_type.currentText().lower())
engine = EngineManager.engine_with_name(self.window.engine_type.currentText().lower())
input_path = engine().perform_presubmission_tasks(input_path)
# submit
err_msg = ""

View File

@@ -93,7 +93,7 @@ class EngineBrowserWindow(QMainWindow):
def update_table(self):
def update_table_worker():
raw_server_data = RenderServerProxy(self.hostname).get_renderer_info()
raw_server_data = RenderServerProxy(self.hostname).get_engine_info()
if not raw_server_data:
return

View File

@@ -22,10 +22,10 @@ from src.render_queue import RenderQueue
from src.utilities.misc_helper import get_time_elapsed, resources_dir, is_localhost
from src.utilities.status_utils import RenderStatus
from src.utilities.zeroconf_server import ZeroconfServer
from src.ui.add_job import NewRenderJobForm
from src.ui.console import ConsoleWindow
from src.ui.add_job_window import NewRenderJobForm
from src.ui.console_window import ConsoleWindow
from src.ui.engine_browser import EngineBrowserWindow
from src.ui.log_viewer import LogViewer
from src.ui.log_window import LogViewer
from src.ui.widgets.menubar import MenuBar
from src.ui.widgets.proportional_image_label import ProportionalImageLabel
from src.ui.widgets.statusbar import StatusBar
@@ -306,12 +306,12 @@ class MainWindow(QMainWindow):
get_time_elapsed(start_time, end_time)
name = job.get('name') or os.path.basename(job.get('input_path', ''))
renderer = f"{job.get('renderer', '')}-{job.get('renderer_version')}"
engine_name = f"{job.get('renderer', '')}-{job.get('renderer_version')}"
priority = str(job.get('priority', ''))
total_frames = str(job.get('total_frames', ''))
date_created_string = iso_datestring_to_formatted_datestring(job['date_created'])
items = [QTableWidgetItem(job['id']), QTableWidgetItem(name), QTableWidgetItem(renderer),
items = [QTableWidgetItem(job['id']), QTableWidgetItem(name), QTableWidgetItem(engine_name),
QTableWidgetItem(priority), QTableWidgetItem(display_status), QTableWidgetItem(time_elapsed),
QTableWidgetItem(total_frames), QTableWidgetItem(date_created_string)]
@@ -395,7 +395,7 @@ class MainWindow(QMainWindow):
return []
def refresh_job_headers(self):
self.job_list_view.setHorizontalHeaderLabels(["ID", "Name", "Renderer", "Priority", "Status",
self.job_list_view.setHorizontalHeaderLabels(["ID", "Name", "Engine", "Priority", "Status",
"Time Elapsed", "Frames", "Date Created"])
self.job_list_view.setColumnHidden(0, True)