[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