OverviewFilesCommitsIssuesDocsReleasesPeers

hardops / utils / context.py

21 lines · python ref:
import bpy
from . objects import set_active

class ExecutionContext:
    def __init__(self, mode, active_object):
        self.context_mode = mode
        self.active_object = active_object

    def __enter__(self):
        set_active(self.active_object)
        self.old_mode = get_mode()
        if self.old_mode != self.context_mode:
            bpy.ops.object.mode_set(mode = self.context_mode)

    def __exit__(self, exc_type, exc_value, exc_tb):
        if self.old_mode != self.context_mode:
            bpy.ops.object.mode_set(mode = self.old_mode)

def get_mode():
    return getattr(bpy.context.active_object, "mode", "OBJECT")