[Bf-blender-cvs] [b8cd9b404a5] temp-workspace-object-mode-removal: Use workspace mode for python scripts
Campbell Barton
noreply at git.blender.org
Wed Feb 7 10:52:47 CET 2018
Commit: b8cd9b404a5837704e07f476d8e2fec1f1be485a
Author: Campbell Barton
Date: Wed Feb 7 20:52:20 2018 +1100
Branches: temp-workspace-object-mode-removal
https://developer.blender.org/rBb8cd9b404a5837704e07f476d8e2fec1f1be485a
Use workspace mode for python scripts
===================================================================
M release/scripts/modules/bpy_extras/object_utils.py
M release/scripts/modules/keyingsets_utils.py
M release/scripts/startup/bl_operators/freestyle.py
M release/scripts/startup/bl_operators/mesh.py
M release/scripts/startup/bl_operators/object.py
M release/scripts/startup/bl_operators/object_quick_effects.py
M release/scripts/startup/bl_operators/uvcalc_lightmap.py
M release/scripts/startup/bl_operators/uvcalc_smart_project.py
M release/scripts/startup/bl_ui/properties_constraint.py
M release/scripts/startup/bl_ui/properties_data_bone.py
M release/scripts/startup/bl_ui/properties_data_mesh.py
M release/scripts/startup/bl_ui/properties_data_modifier.py
M release/scripts/startup/bl_ui/space_image.py
M release/scripts/startup/bl_ui/space_view3d.py
M release/scripts/startup/bl_ui/space_view3d_toolbar.py
M release/scripts/startup/keyingsets_builtins.py
===================================================================
diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py
index 04b3858bb0d..31938f3ad3e 100644
--- a/release/scripts/modules/bpy_extras/object_utils.py
+++ b/release/scripts/modules/bpy_extras/object_utils.py
@@ -119,6 +119,7 @@ def object_data_add(context, obdata, operator=None, name=None):
:return: the newly created object in the scene.
:rtype: :class:`bpy.types.Object`
"""
+ workspace = context.workspace
scene = context.scene
layer = context.view_layer
layer_collection = context.layer_collection
@@ -146,9 +147,9 @@ def object_data_add(context, obdata, operator=None, name=None):
# caused because entering edit-mode does not add a empty undo slot!
if context.user_preferences.edit.use_enter_edit_mode:
if not (obj_act and
- obj_act.mode == 'EDIT' and
- obj_act.type == obj_new.type):
-
+ obj_act.type == obj_new.type and
+ workspace.object_mode == 'EDIT'
+ ):
_obdata = bpy.data.meshes.new(name)
obj_act = bpy.data.objects.new(_obdata.name, _obdata)
obj_act.matrix_world = obj_new.matrix_world
@@ -159,7 +160,10 @@ def object_data_add(context, obdata, operator=None, name=None):
bpy.ops.ed.undo_push(message="Enter Editmode")
# XXX
- if obj_act and obj_act.mode == 'EDIT' and obj_act.type == obj_new.type:
+ if (obj_act and
+ obj_act.type == obj_new.type and
+ workspace.object_mode == 'EDIT'
+ ):
bpy.ops.mesh.select_all(action='DESELECT')
obj_act.select_set(action='SELECT')
bpy.ops.object.mode_set(mode='OBJECT')
@@ -249,9 +253,10 @@ def object_image_guess(obj, bm=None):
first checking the texture-faces, then the material.
"""
# TODO, cycles/nodes materials
+ workspace = context.workspace
me = obj.data
if bm is None:
- if obj.mode == 'EDIT':
+ if workspace.object_mode == 'EDIT':
import bmesh
bm = bmesh.from_edit_mesh(me)
diff --git a/release/scripts/modules/keyingsets_utils.py b/release/scripts/modules/keyingsets_utils.py
index 7ce5f3e029b..40e74e27ed2 100644
--- a/release/scripts/modules/keyingsets_utils.py
+++ b/release/scripts/modules/keyingsets_utils.py
@@ -57,9 +57,10 @@ def path_add_property(path, prop):
# selected objects (active object must be in object mode)
def RKS_POLL_selected_objects(ksi, context):
+ workspace = context.workspace
ob = context.active_object
if ob:
- return ob.mode == 'OBJECT'
+ return workspace.object_mode == 'OBJECT'
else:
return bool(context.selected_objects)
@@ -67,8 +68,9 @@ def RKS_POLL_selected_objects(ksi, context):
# selected bones
def RKS_POLL_selected_bones(ksi, context):
# we must be in Pose Mode, and there must be some bones selected
+ workspace = context.workspace
ob = context.active_object
- if ob and ob.mode == 'POSE':
+ if ob and workspace.object_mode == 'POSE':
if context.active_pose_bone or context.selected_pose_bones:
return True
@@ -87,8 +89,9 @@ def RKS_POLL_selected_items(ksi, context):
# all selected objects or pose bones, depending on which we've got
def RKS_ITER_selected_item(ksi, context, ks):
+ workspace = context.workspace
ob = context.active_object
- if ob and ob.mode == 'POSE':
+ if ob and workspace.object_mode == 'POSE':
for bone in context.selected_pose_bones:
ksi.generate(context, ks, bone)
else:
diff --git a/release/scripts/startup/bl_operators/freestyle.py b/release/scripts/startup/bl_operators/freestyle.py
index 0cfe78879db..9b1d054cc15 100644
--- a/release/scripts/startup/bl_operators/freestyle.py
+++ b/release/scripts/startup/bl_operators/freestyle.py
@@ -53,6 +53,7 @@ class SCENE_OT_freestyle_fill_range_by_selection(bpy.types.Operator):
def execute(self, context):
import sys
+ workspace = context.workspace
scene = context.scene
view_layer = scene.view_layers.active
lineset = view_layer.freestyle_settings.linesets.active
@@ -79,7 +80,7 @@ class SCENE_OT_freestyle_fill_range_by_selection(bpy.types.Operator):
return {'CANCELLED'}
# Find selected vertices in editmesh
ob = context.active_object
- if ob.type == 'MESH' and ob.mode == 'EDIT' and ob.name != ref.name:
+ if ob.type == 'MESH' and workspace.object_mode == 'EDIT' and ob.name != ref.name:
bpy.ops.object.mode_set(mode='OBJECT')
selected_verts = [v for v in ob.data.vertices if v.select]
bpy.ops.object.mode_set(mode='EDIT')
@@ -143,6 +144,7 @@ class SCENE_OT_freestyle_add_edge_marks_to_keying_set(bpy.types.Operator):
def execute(self, context):
# active keying set
+ workspace = context.workspace
scene = context.scene
ks = scene.keying_sets.active
if ks is None:
@@ -150,7 +152,7 @@ class SCENE_OT_freestyle_add_edge_marks_to_keying_set(bpy.types.Operator):
ks.bl_description = ""
# add data paths to the keying set
ob = context.active_object
- ob_mode = ob.mode
+ ob_mode = workspace.object_mode
mesh = ob.data
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
for i, edge in enumerate(mesh.edges):
@@ -174,6 +176,7 @@ class SCENE_OT_freestyle_add_face_marks_to_keying_set(bpy.types.Operator):
def execute(self, context):
# active keying set
+ workspace = context.workspace
scene = context.scene
ks = scene.keying_sets.active
if ks is None:
@@ -181,7 +184,7 @@ class SCENE_OT_freestyle_add_face_marks_to_keying_set(bpy.types.Operator):
ks.bl_description = ""
# add data paths to the keying set
ob = context.active_object
- ob_mode = ob.mode
+ ob_mode = workspace.object_mode
mesh = ob.data
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
for i, polygon in enumerate(mesh.polygons):
diff --git a/release/scripts/startup/bl_operators/mesh.py b/release/scripts/startup/bl_operators/mesh.py
index c7a11c23c3f..ccc592e80b8 100644
--- a/release/scripts/startup/bl_operators/mesh.py
+++ b/release/scripts/startup/bl_operators/mesh.py
@@ -57,8 +57,9 @@ class MeshMirrorUV(Operator):
precision = self.precision
double_warn = 0
+ workspace = context.workspace
ob = context.active_object
- is_editmode = (ob.mode == 'EDIT')
+ is_editmode = (workspace.object_mode == 'EDIT')
if is_editmode:
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py
index 566487d9d0e..58f3afa3d6c 100644
--- a/release/scripts/startup/bl_operators/object.py
+++ b/release/scripts/startup/bl_operators/object.py
@@ -63,12 +63,13 @@ class SelectPattern(Operator):
pattern_match = (lambda a, b:
fnmatch.fnmatchcase(a.upper(), b.upper()))
is_ebone = False
+ workspace = context.workspace
obj = context.object
- if obj and obj.mode == 'POSE':
+ if obj and workspace.object_mode == 'POSE':
items = obj.data.bones
if not self.extend:
bpy.ops.pose.select_all(action='DESELECT')
- elif obj and obj.type == 'ARMATURE' and obj.mode == 'EDIT':
+ elif obj and obj.type == 'ARMATURE' and workspace.object_mode == 'EDIT':
items = obj.data.edit_bones
if not self.extend:
bpy.ops.armature.select_all(action='DESELECT')
@@ -248,6 +249,8 @@ class SubdivisionSet(Operator):
if not relative and level < 0:
self.level = level = 0
+ workspace = context.workspace
+
def set_object_subd(obj):
for mod in obj.modifiers:
if mod.type == 'MULTIRES':
@@ -257,18 +260,18 @@ class SubdivisionSet(Operator):
for i in range(sub):
bpy.ops.object.multires_subdivide(modifier="Multires")
- if obj.mode == 'SCULPT':
+ if workspace.object_mode == 'SCULPT':
if mod.sculpt_levels != level:
mod.sculpt_levels = level
- elif obj.mode == 'OBJECT':
+ elif workspace.object_mode == 'OBJECT':
if mod.levels != level:
mod.levels = level
return
else:
- if obj.mode == 'SCULPT':
+ if workspace.object_mode == 'SCULPT':
if mod.sculpt_levels + level <= mod.total_levels:
mod.sculpt_levels += level
- elif obj.mode == 'OBJECT':
+ elif workspace.object_mode == 'OBJECT':
if mod.levels + level <= mod.total_levels:
mod.levels += level
return
@@ -284,7 +287,7 @@ class SubdivisionSet(Operator):
# add a new modifier
try:
- if obj.mode == 'SCULPT':
+ if workspace.object_mode == 'SCULPT':
mod = obj.modifiers.new("Multires", 'MULTIRES')
if level > 0:
for i in range(0, level):
@@ -467,8 +470,9 @@ class ShapeTransfer(Operator):
@classmethod
def poll(cls, context):
+ workspace = context.workspace
obj = context.active_object
- return (obj and obj.mode != 'EDIT')
+ return (obj and workspace.object_mode != 'EDIT')
def execute(self, context):
ob_act = context.active_object
@@ -508,10 +512,11 @@ class JoinUVs(Operator):
def _main(self, context):
import array
+ workspace = context.workspace
obj = context.active_object
mesh = obj.data
-
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list