diff --git a/space_view3d_edit_object_parameters.py b/space_view3d_edit_object_parameters.py index fb949afac45d5dac570f746fb7ff2883e25e7b75..9dd24e0dd69c94bf41009d9498757ba7e834687a 100755 --- a/space_view3d_edit_object_parameters.py +++ b/space_view3d_edit_object_parameters.py @@ -27,7 +27,9 @@ bl_addon_info = { 'version': '0.1.3', 'blender': (2, 5, 3), 'location': 'View3D > Tool Shelf > Edit Object Parameters', - 'description': 're-call an object menu that was created with a Add Mesh operator', + 'description': 'Re-call an object menu that was created' \ + ' with an Add Mesh operator. This operator must have stored'\ + ' the recall data though.', 'url': 'http://wiki.blender.org/index.php/Extensions:2.5/Py/' \ 'Scripts/3D_interaction/Edit_Object_Parameters', 'category': '3D View'} @@ -125,11 +127,12 @@ class VIEW3D_OT_recall_object_operator(bpy.types.Operator): and ob.items()): if 'recall' in ob: - r = ob['recall'].convert_to_pyobject() + recall_props = ob['recall'].convert_to_pyobject() # Check if an operator string was defined. - if "recall_op" in r: - op_idname = r["recall_op"] + if 'op' in recall_props: + op_idname = recall_props['op'] + op_args = recall_props['args'] print("Recalling operator: " + op_idname) @@ -137,10 +140,7 @@ class VIEW3D_OT_recall_object_operator(bpy.types.Operator): op = get_operator_by_idname(op_idname) if op: # Prepare the stored data as arguments for the op. - args = dict([(k[0], k[1]) for k in r.items()]) - - # We need to remove the "recall_op" string. - del args["recall_op"] + args = dict([(k[0], k[1]) for k in op_args.items()]) # Execute the operator with the unpacked parameters. op(**args) @@ -150,7 +150,7 @@ class VIEW3D_OT_recall_object_operator(bpy.types.Operator): return {'CANCELLED'} else: - print("No operator found in recall data!") + print("No operator prop found in recall data!") return {'CANCELLED'} else: @@ -197,35 +197,35 @@ class VIEW3D_OT_edit_object_parameters(bpy.types.Panel): scene = context.scene ob = scene.objects.active - r = ob['recall'] - - row = layout.row() - - if "recall_op" in r: - op_idname = r["recall_op"] - - # Find and recall operator - type = get_operator_class_by_idname(op_idname) + if ob: + row = layout.row() - if type: - row.label(text="Operator:") + recall_props = ob['recall'] + if 'op' in recall_props: + op_idname = recall_props['op'] + op_args = recall_props['args'] - box = layout.column().box() - column = box.column() - row = column.row() + # Find and recall operator + type = get_operator_class_by_idname(op_idname) - row.label(text=type.bl_label) - - if len(r) > 1: - row = layout.row() - row.label(text="Properties:") + if type: + row.label(text="Operator:") box = layout.column().box() column = box.column() row = column.row() - for prop_name in r: - if prop_name != "recall_op": + row.label(text=type.bl_label) + + if op_args: + row = layout.row() + row.label(text="Properties:") + + box = layout.column().box() + column = box.column() + row = column.row() + + for prop_name, prop_val in op_args.items(): row = column.row() name = prop_name if hasattr(type, prop_name): @@ -235,14 +235,15 @@ class VIEW3D_OT_edit_object_parameters(bpy.types.Panel): name = prop_full_name row.label(text=name) - row.label(text=str(r[prop_name])) + row.label(text=str(prop_val)) + else: + row.label(text="Could not find operator " + + op_idname + "!", + icon='ERROR') else: - row.label(text="Could not find operator " + op_idname + "!", + row.label(text="Could not find operatorID in object.", icon='ERROR') - else: - row.label(text="Could not find operator info.", - icon='ERROR') ################################