diff --git a/libs/replication b/libs/replication index 5731858..dcf67a4 160000 --- a/libs/replication +++ b/libs/replication @@ -1 +1 @@ -Subproject commit 57318589813dd5f23a341603d66255b71af3212e +Subproject commit dcf67a40e32c4e7656a2cba6e4525b8113707521 diff --git a/operators.py b/operators.py index dab557c..6164e05 100644 --- a/operators.py +++ b/operators.py @@ -359,6 +359,25 @@ class SessionSaveConfig(bpy.types.Operator): def execute(self, context): context.window_manager.session.save() +class SessionApply(bpy.types.Operator): + bl_idname = "session.apply" + bl_label = "apply the target item into the blender data" + bl_description = "Apply target object into blender data" + bl_options = {"REGISTER"} + + target = bpy.props.StringProperty() + + @classmethod + def poll(cls, context): + return True + + + def execute(self, context): + global client + + client.apply(uuid=self.target) + + return {"FINISHED"} classes = ( SessionStartOperator, @@ -369,6 +388,7 @@ classes = ( SessionPropertyRightOperator, SessionDumpDatabase, SessionSaveConfig, + SessionApply, ) def register(): diff --git a/ui.py b/ui.py index 221dafc..f5d20ac 100644 --- a/ui.py +++ b/ui.py @@ -1,5 +1,6 @@ import bpy from . import operators +from .libs.replication.constants import * ICONS = {'Image': 'IMAGE_DATA', 'Curve':'CURVE_DATA', 'Client':'SOLO_ON','Collection': 'FILE_FOLDER', 'Mesh': 'MESH_DATA', 'Object': 'OBJECT_DATA', 'Material': 'MATERIAL_DATA', @@ -236,7 +237,11 @@ class SESSION_PT_outliner(bpy.types.Panel): detail_item_box.label(text="",icon=item.icon) detail_item_box.label(text="{} ".format(name)) detail_item_box.label(text="{} ".format(item.owner)) - detail_item_box.label(text="{} ".format(PROP_STATES[item.state])) + + if item.state == FETCHED: + detail_item_box.operator("session.apply", text=PROP_STATES[item.state]).target = item.uuid + else: + detail_item_box.label(text="{} ".format(PROP_STATES[item.state])) # right_icon = "DECORATE_UNLOCKED"