mirror of
https://github.com/blw1138/Zordon.git
synced 2026-02-05 13:46:10 +00:00
@@ -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 = ""
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user