mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 08:48:13 +00:00
Add UI options for aerender
This commit is contained in:
@@ -59,6 +59,15 @@ class AERender(BaseRenderEngine):
|
||||
# todo: create implementation
|
||||
return []
|
||||
|
||||
def ui_options(self, project_info):
|
||||
from src.engines.aerender.aerender_ui import AERenderUI
|
||||
return AERenderUI.get_options(self, project_info)
|
||||
|
||||
@classmethod
|
||||
def worker_class(cls):
|
||||
from src.engines.aerender.aerender_worker import AERenderWorker
|
||||
return AERenderWorker
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
x = AERender().get_project_info('/Users/brett/ae_testing/project.aepx')
|
||||
|
||||
8
src/engines/aerender/aerender_ui.py
Normal file
8
src/engines/aerender/aerender_ui.py
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
class AERenderUI:
|
||||
@staticmethod
|
||||
def get_options(instance, project_info):
|
||||
options = [
|
||||
{'name': 'comp', 'options': project_info.get('comp_names', [])}
|
||||
]
|
||||
return options
|
||||
@@ -71,7 +71,7 @@ class AERenderWorker(BaseRenderWorker):
|
||||
self.total_frames = timecode_to_frames(duration_string.split('Duration:')[-1], float(frame_rate))
|
||||
|
||||
match = re.match(r'PROGRESS:.*\((?P<frame>\d+)\): (?P<time>\d+)', line).groupdict()
|
||||
self.last_frame = match['frame']
|
||||
self.current_frame = match['frame']
|
||||
|
||||
def average_frame_duration(self):
|
||||
|
||||
@@ -82,12 +82,12 @@ class AERenderWorker(BaseRenderWorker):
|
||||
if match:
|
||||
total_durations += int(match.group(2))
|
||||
|
||||
average = float(total_durations) / self.last_frame
|
||||
average = float(total_durations) / self.current_frame
|
||||
return average
|
||||
|
||||
def percent_complete(self):
|
||||
if self.total_frames:
|
||||
return (float(self.last_frame) / float(self.total_frames)) * 100
|
||||
return (float(self.current_frame) / float(self.total_frames)) * 100
|
||||
else:
|
||||
return 0
|
||||
|
||||
|
||||
@@ -18,12 +18,12 @@ class Blender(BaseRenderEngine):
|
||||
from src.engines.blender.blender_downloader import BlenderDownloader
|
||||
return BlenderDownloader
|
||||
|
||||
@staticmethod
|
||||
def worker_class():
|
||||
@classmethod
|
||||
def worker_class(cls):
|
||||
from src.engines.blender.blender_worker import BlenderRenderWorker
|
||||
return BlenderRenderWorker
|
||||
|
||||
def ui_options(self):
|
||||
def ui_options(self, project_info):
|
||||
from src.engines.blender.blender_ui import BlenderUI
|
||||
return BlenderUI.get_options(self)
|
||||
|
||||
|
||||
@@ -19,8 +19,8 @@ for cam_obj in bpy.data.cameras:
|
||||
|
||||
data = {'cameras': cameras,
|
||||
'engine': scene.render.engine,
|
||||
'frame_start': scene.frame_start,
|
||||
'frame_end': scene.frame_end,
|
||||
'start_frame': scene.frame_start,
|
||||
'end_frame': scene.frame_end,
|
||||
'resolution_x': scene.render.resolution_x,
|
||||
'resolution_y': scene.render.resolution_y,
|
||||
'resolution_percentage': scene.render.resolution_percentage,
|
||||
|
||||
@@ -47,11 +47,11 @@ class BaseRenderEngine(object):
|
||||
def downloader(): # override when subclassing if using a downloader class
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
def worker_class(): # override when subclassing to link worker class
|
||||
raise NotImplementedError("Worker class not implemented")
|
||||
@classmethod
|
||||
def worker_class(cls): # override when subclassing to link worker class
|
||||
raise NotImplementedError(f"Worker class not implemented for engine {cls.name()}")
|
||||
|
||||
def ui_options(self): # override to return options for ui
|
||||
def ui_options(self, project_info): # override to return options for ui
|
||||
return {}
|
||||
|
||||
def get_help(self): # override if renderer uses different help flag
|
||||
|
||||
@@ -12,14 +12,14 @@ class FFMPEG(BaseRenderEngine):
|
||||
from src.engines.ffmpeg.ffmpeg_downloader import FFMPEGDownloader
|
||||
return FFMPEGDownloader
|
||||
|
||||
@staticmethod
|
||||
def worker_class():
|
||||
@classmethod
|
||||
def worker_class(cls):
|
||||
from src.engines.ffmpeg.ffmpeg_worker import FFMPEGRenderWorker
|
||||
return FFMPEGRenderWorker
|
||||
|
||||
def ui_options(self):
|
||||
def ui_options(self, project_info):
|
||||
from src.engines.ffmpeg.ffmpeg_ui import FFMPEGUI
|
||||
return FFMPEGUI.get_options(self)
|
||||
return FFMPEGUI.get_options(self, project_info)
|
||||
|
||||
@classmethod
|
||||
def supported_extensions(cls):
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class FFMPEGUI:
|
||||
@staticmethod
|
||||
def get_options(instance):
|
||||
def get_options(instance, project_info):
|
||||
options = []
|
||||
return options
|
||||
|
||||
@@ -350,7 +350,7 @@ class NewRenderJobForm(QWidget):
|
||||
# Dynamic Engine Options
|
||||
clear_layout(self.renderer_options_layout) # clear old options
|
||||
# dynamically populate option list
|
||||
self.current_engine_options = engine().ui_options()
|
||||
self.current_engine_options = engine().ui_options(self.project_info)
|
||||
for option in self.current_engine_options:
|
||||
h_layout = QHBoxLayout()
|
||||
label = QLabel(option['name'].replace('_', ' ').capitalize() + ':')
|
||||
|
||||
Reference in New Issue
Block a user