Add Job Window Redesign (#128)

* Initial refactor of add_job_window

* Improved project naming and fixed Blender engine issue

* Improve time representation in main window

* Cleanup Blender job creation

* Send resolution / fps data in job submission

* More window improvements

* EngineManager renaming and refactoring

* FFMPEG path fixes for ffprobe

* More backend refactoring / improvements

* Performance improvements / API refactoring

* Show current job count in add window UI before submission

* Move some UI update code out of background thread

* Move some main window UI update code out of background thread
This commit is contained in:
2026-01-12 09:06:53 -06:00
committed by GitHub
parent d8af7c878e
commit 8b3fdd14b5
18 changed files with 657 additions and 372 deletions
+10 -7
View File
@@ -24,10 +24,12 @@ class Blender(BaseRenderEngine):
from src.engines.blender.blender_worker import BlenderRenderWorker
return BlenderRenderWorker
@staticmethod
def ui_options(system_info):
from src.engines.blender.blender_ui import BlenderUI
return BlenderUI.get_options(system_info)
def ui_options(self):
options = [
{'name': 'engine', 'options': self.supported_render_engines()},
{'name': 'render_device', 'options': ['Any', 'GPU', 'CPU']},
]
return options
def supported_extensions(self):
return ['blend']
@@ -117,7 +119,7 @@ class Blender(BaseRenderEngine):
# report any missing textures
not_found = re.findall("(Unable to pack file, source path .*)\n", result_text)
for err in not_found:
logger.error(err)
raise ChildProcessError(err)
p = re.compile('Saved to: (.*)\n')
match = p.search(result_text)
@@ -125,6 +127,7 @@ class Blender(BaseRenderEngine):
new_path = os.path.join(dir_name, match.group(1).strip())
logger.info(f'Blender file packed successfully to {new_path}')
return new_path
return project_path
except Exception as e:
msg = f'Error packing .blend file: {e}'
logger.error(msg)
@@ -164,7 +167,7 @@ class Blender(BaseRenderEngine):
return options
def system_info(self):
return {'render_devices': self.get_render_devices()}
return {'render_devices': self.get_render_devices(), 'engines': self.supported_render_engines()}
def get_render_devices(self):
script_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'scripts', 'get_system_info.py')
@@ -179,7 +182,7 @@ class Blender(BaseRenderEngine):
logger.error("GPU data not found in the output.")
def supported_render_engines(self):
engine_output = subprocess.run([self.engine_path(), '-E', 'help'], timeout=SUBPROCESS_TIMEOUT,
engine_output = subprocess.run([self.engine_path(), '-b', '-E', 'help'], timeout=SUBPROCESS_TIMEOUT,
capture_output=True, creationflags=_creationflags).stdout.decode('utf-8').strip()
render_engines = [x.strip() for x in engine_output.split('Blender Engine Listing:')[-1].strip().splitlines()]
return render_engines