[Bf-blender-cvs] [14d9e46] master: UI: edits to pie-menu-enum
Campbell Barton
noreply at git.blender.org
Wed Aug 13 23:41:11 CEST 2014
Commit: 14d9e469779ef63ed395b3e3339d416a3192b820
Author: Campbell Barton
Date: Thu Aug 14 07:29:38 2014 +1000
Branches: master
https://developer.blender.org/rB14d9e469779ef63ed395b3e3339d416a3192b820
UI: edits to pie-menu-enum
- avoid eval
- report if operator is missing
===================================================================
M release/scripts/startup/bl_operators/wm.py
===================================================================
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index c4086c5e..c1a0ede 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -537,6 +537,7 @@ class WM_OT_context_pie_enum(Operator):
data_path = rna_path_prop
def invoke(self, context, event):
+ wm = context.window_manager
data_path = self.data_path
value = context_path_validate(context, data_path)
@@ -551,7 +552,7 @@ class WM_OT_context_pie_enum(Operator):
layout = self.layout
layout.prop(value_base, prop_string, expand=True)
- context.window_manager.popup_menu_pie(draw_func=draw_cb, title=prop.name, icon=prop.icon, event=event)
+ wm.popup_menu_pie(draw_func=draw_cb, title=prop.name, icon=prop.icon, event=event)
return {'FINISHED'}
@@ -572,21 +573,28 @@ class WM_OT_operator_pie_enum(Operator):
)
def invoke(self, context, event):
- op = eval("bpy.ops.%s" % self.data_path)
+ wm = context.window_manager
- if not op:
- return {'PASS_THROUGH'}
+ data_path = self.data_path
+ prop_string = self.prop_string
- title = op.get_rna().bl_rna.name
- op_name = self.data_path
- prop_name = self.prop_string
+ # same as eval("bpy.ops." + data_path)
+ op_mod_str, ob_id_str = data_path.split(".", 1)
+ op = getattr(getattr(bpy.ops, op_mod_str), ob_id_str)
+ del op_mod_str, ob_id_str
+
+ try:
+ op_rna = op.get_rna()
+ except KeyError:
+ self.report({'ERROR'}, "Operator not found: bpy.ops.%s" % data_path)
+ return {'CANCELLED'}
def draw_cb(self, context):
layout = self.layout
pie = layout.menu_pie()
- pie.operator_enum(op_name, prop_name)
+ pie.operator_enum(data_path, prop_string)
- context.window_manager.popup_menu_pie(draw_func=draw_cb, title=title, event=event)
+ wm.popup_menu_pie(draw_func=draw_cb, title=op_rna.bl_rna.name, event=event)
return {'FINISHED'}
@@ -1944,7 +1952,7 @@ class WM_OT_addon_install(Operator):
addons_old = {mod.__name__ for mod in addon_utils.modules()}
- #check to see if the file is in compressed format (.zip)
+ # check to see if the file is in compressed format (.zip)
if zipfile.is_zipfile(pyfile):
try:
file_to_extract = zipfile.ZipFile(pyfile, 'r')
@@ -1977,7 +1985,7 @@ class WM_OT_addon_install(Operator):
self.report({'WARNING'}, "File already installed to %r\n" % path_dest)
return {'CANCELLED'}
- #if not compressed file just copy into the addon path
+ # if not compressed file just copy into the addon path
try:
shutil.copyfile(pyfile, path_dest)
More information about the Bf-blender-cvs
mailing list