Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-08-14 01:29:38 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-08-14 01:40:19 +0400
commit14d9e469779ef63ed395b3e3339d416a3192b820 (patch)
tree69f6e929b77b3c48b5ac2c0bf5631d74a17ea308 /release/scripts
parente05567ef3e72830abb2cd23c26b0bbc6139f0e1e (diff)
UI: edits to pie-menu-enum
- avoid eval - report if operator is missing
Diffstat (limited to 'release/scripts')
-rw-r--r--release/scripts/startup/bl_operators/wm.py30
1 files changed, 19 insertions, 11 deletions
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index c4086c5eac0..c1a0edec65c 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)