Move "From Cursor" operator which sets dupli group offset to own operator
authorSergey Sharybin <sergey.vfx@gmail.com>
Fri, 13 Apr 2012 12:14:20 +0000 (12:14 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Fri, 13 Apr 2012 12:14:20 +0000 (12:14 +0000)
Previously it used to use cursor location from time when panel was drawn,
which in some cases lead to using previous cursor location instead of current.

release/scripts/startup/bl_operators/object.py
release/scripts/startup/bl_ui/properties_object.py

index 433c4403055b6b1574157fa72514f7050cb1446c..4ade55c0af678872a0f0d2a36bedfe0d877f6629 100644 (file)
@@ -691,3 +691,29 @@ class TransformsToDeltasAnim(Operator):
         context.scene.frame_set(context.scene.frame_current)
 
         return {'FINISHED'}
+
+
+class DupliOffsetFromCursor(Operator):
+    '''Set offset used for DupliGroup based on cursor position'''
+    bl_idname = "object.dupli_offset_from_cursor"
+    bl_label = "Set Offset From Cursor"
+    bl_options = {'REGISTER', 'UNDO'}
+
+    group = IntProperty(
+            name="Group",
+            description="Group index to set offset for",
+            default=0,
+            )
+
+    @classmethod
+    def poll(cls, context):
+        return  context.active_object is not None
+
+    def execute(self, context):
+        scene = context.scene
+        ob = context.active_object
+        group = self.group
+
+        ob.users_group[group].dupli_offset = scene.cursor_location
+
+        return {'FINISHED'}
index c03aeab1f371956fe075c67db096f423cdb2797a..d8d3bd5fd97816f0104041366e0ae79f6f210781 100644 (file)
@@ -162,7 +162,6 @@ class OBJECT_PT_groups(ObjectButtonsPanel, Panel):
 
         # XXX, this is bad practice, yes, I wrote it :( - campbell
         index = 0
-        value = str(tuple(context.scene.cursor_location))
         for group in bpy.data.groups:
             if ob.name in group.objects:
                 col = layout.column(align=True)
@@ -181,9 +180,8 @@ class OBJECT_PT_groups(ObjectButtonsPanel, Panel):
                 col = split.column()
                 col.prop(group, "dupli_offset", text="")
 
-                props = col.operator("wm.context_set_value", text="From Cursor")
-                props.data_path = "object.users_group[%d].dupli_offset" % index
-                props.value = value
+                props = col.operator("object.dupli_offset_from_cursor", text="From Cursor")
+                props.index = index
                 index += 1