159 lines
4.6 KiB
Python
159 lines
4.6 KiB
Python
import bpy
|
|
|
|
from bpy.types import Panel, Operator, PropertyGroup, UIList
|
|
from bpy.props import (StringProperty,
|
|
BoolProperty,
|
|
IntProperty,
|
|
FloatProperty,
|
|
EnumProperty,
|
|
PointerProperty,
|
|
CollectionProperty
|
|
)
|
|
|
|
|
|
class PBPBlendFileProperty(PropertyGroup):
|
|
path = StringProperty(subtype="FILE_PATH")
|
|
filename = StringProperty(subtype="FILE_NAME")
|
|
blending_enabled = BoolProperty(
|
|
name="Enable or Disable",
|
|
description="Enable blend file for blending",
|
|
default=False)
|
|
status = StringProperty(
|
|
name="Status",
|
|
description="Status of current file",
|
|
default=""
|
|
)
|
|
|
|
|
|
class PBPWorkerProperty(PropertyGroup):
|
|
hostname = StringProperty()
|
|
port = StringProperty()
|
|
remote_project_path = StringProperty()
|
|
blending_enabled = BoolProperty(
|
|
name="Enable or Disable",
|
|
description="Enable farm for blending",
|
|
default=False)
|
|
status = StringProperty(
|
|
name="Status",
|
|
description="Status of current file",
|
|
default=""
|
|
)
|
|
|
|
|
|
class PBPProperties(PropertyGroup):
|
|
project_folder = StringProperty(
|
|
name="Project folder",
|
|
description="Path to project folder",
|
|
default="//",
|
|
subtype="DIR_PATH"
|
|
)
|
|
worker_list = CollectionProperty(type=PBPWorkerProperty)
|
|
worker_list_index = IntProperty(name="Index for my_list", default=0)
|
|
|
|
blend_file_list = CollectionProperty(type=PBPBlendFileProperty)
|
|
upload_status = StringProperty(
|
|
name="Upload status",
|
|
description="Status of current upload",
|
|
default=""
|
|
)
|
|
|
|
|
|
class RENDER_UL_workers(UIList):
|
|
def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
|
|
layout.label(item.hostname)
|
|
|
|
|
|
class PBPProjectPanel(Panel):
|
|
bl_idname = "RENDER_PT_PBP_project_panel"
|
|
bl_label = "PBP Workers Settings"
|
|
bl_space_type = 'PROPERTIES'
|
|
bl_region_type = 'WINDOW'
|
|
bl_context = "render"
|
|
|
|
def draw(self, context):
|
|
layout = self.layout
|
|
|
|
# layout.operator(ProjectManagerStartBlend.bl_idname)
|
|
configuration = context.window_manager.push_blend_pull
|
|
layout.label(text="Workers")
|
|
|
|
row = layout.row()
|
|
col = row.column()
|
|
col.template_list("RENDER_UL_workers", "", configuration, "worker_list", configuration, "worker_list_index", rows=2)
|
|
|
|
col = row.column()
|
|
sub = col.column(align=True)
|
|
sub.operator("render.pbp_add_worker", icon='ZOOMIN', text="")
|
|
sub.operator("render.pbp_del_worker", icon='ZOOMOUT', text="")
|
|
|
|
|
|
class PBPWorkersPanel(Panel):
|
|
bl_idname = "RENDER_PT_PBP_workers_panel"
|
|
bl_label = "PBP Workers Settings"
|
|
bl_space_type = 'PROPERTIES'
|
|
bl_region_type = 'WINDOW'
|
|
bl_context = "render"
|
|
|
|
def draw(self, context):
|
|
layout = self.layout
|
|
|
|
# layout.operator(ProjectManagerStartBlend.bl_idname)
|
|
configuration = context.window_manager.push_blend_pull
|
|
layout.label(text="Workers")
|
|
|
|
row = layout.row()
|
|
col = row.column()
|
|
col.template_list("RENDER_UL_workers", "", configuration, "worker_list", configuration, "worker_list_index", rows=2)
|
|
|
|
col = row.column()
|
|
sub = col.column(align=True)
|
|
sub.operator("render.pbp_add_worker", icon='ZOOMIN', text="")
|
|
sub.operator("render.pbp_del_worker", icon='ZOOMOUT', text="")
|
|
|
|
|
|
class PBPAddWorkerOperator(Operator):
|
|
bl_idname = "render.pbp_add_worker"
|
|
bl_label = "Add a worker"
|
|
|
|
def execute(self, context):
|
|
|
|
return {'FINISHED'}
|
|
|
|
def invoke(self, context, event):
|
|
wm = context.window_manager
|
|
return wm.invoke_props_dialog(self, width=600)
|
|
|
|
def draw(self, context):
|
|
configuration = context.window_manager.push_blend_pull
|
|
new_worker = configuration.worker_list.add()
|
|
layout = self.layout
|
|
row = layout.row(align=True)
|
|
row.prop(new_worker, "hostname")
|
|
row.prop(new_worker, "port")
|
|
row.prop(new_worker, "remote_project_path")
|
|
row.prop(new_worker, "blending_enabled")
|
|
|
|
|
|
class PBPDelWorkerOperator(Operator):
|
|
bl_idname = "render.pbp_del_worker"
|
|
bl_label = "Remove a worker"
|
|
|
|
def execute(self, context):
|
|
return {'FINISHED'}
|
|
|
|
|
|
def register():
|
|
|
|
bpy.utils.register_class(RENDER_UL_workers)
|
|
bpy.utils.register_module(__name__)
|
|
bpy.types.WindowManager.push_blend_pull = PointerProperty(type=PBPProperties)
|
|
|
|
|
|
def unregister():
|
|
bpy.utils.unregister_module(__name__)
|
|
del bpy.types.WindowManager.push_blend_pull
|
|
|
|
|
|
if __name__ == "__main__":
|
|
register()
|