Пример #1
0
 def execute(self, context):
     package_name = __package__.split(".")[0]
     prefs = bpy.context.preferences.addons[package_name].preferences
     if not timers.is_registered(auto_evaluate_timer):
         timers.register(auto_evaluate_timer, persistent=True)
     prefs.auto_evaluation = True
     return {"FINISHED"}
Пример #2
0
def disable_kmi(cls,
                km_type='3D View',
                idname=None,
                type=None,
                value=None,
                alt=False,
                shift=False,
                ctrl=False,
                retries=3):
    if retries <= 0:
        raise ValueError("No matches or keymap wasn't ready")
    if not any((idname, type, value)):
        raise ValueError("Nothing to search for")

    kc = bpy.context.window_manager.keyconfigs.active
    km = kc.keymaps.get(km_type)
    if not km:
        raise KeyError("Keymap doesn't exist in active keyconfig")
    no_idname, no_type, no_value = not idname, not type, not value
    for kmi in km.keymap_items:
        if ((kmi.type == type or no_type) and (kmi.value == value or no_value)
                and (kmi.idname == idname or no_idname) and kmi.alt == alt
                and kmi.shift == shift and kmi.ctrl == ctrl):
            kmi.active = False
            if not hasattr(cls, "_disabled"):
                cls._disabled = []
            return cls._disabled.append(kmi)

    from bpy.app.timers import register
    args = km_type, idname, type, value, alt, shift, ctrl, retries - 1
    register(lambda: disable_kmi(*args), first_interval=0.2)
Пример #3
0
def register():

    # register the classes
    for cls in classes_to_register:
        bpy.utils.register_class(cls)

    # add the property to the edit bones
    bpy.types.EditBone.editboneconstraint = bpy.props.PointerProperty(
        type=EditBoneConstraintProperties,
        name="Edit Bone Constraint Properties")

    # handle the keymap
    wm = bpy.context.window_manager
    km = wm.keyconfigs.addon.keymaps.new(name="3D View", space_type="VIEW_3D")
    kmi = km.keymap_items.new("editbone.constraint_add_with_targets",
                              "C",
                              "PRESS",
                              ctrl=True,
                              shift=True)
    addon_keymaps.append((km, kmi))
    kmi = km.keymap_items.new("editbone.clear_constraints",
                              "C",
                              "PRESS",
                              ctrl=True,
                              alt=True)
    addon_keymaps.append((km, kmi))

    # Timers
    if not timers.is_registered(auto_evaluate_timer):
        timers.register(auto_evaluate_timer, persistent=True)
Пример #4
0
def keymaps_ensure(register, keymaps):
    active = getattr(keymaps_ensure, "active", None)
    if active is None:
        active = bpy.context.window_manager.keyconfigs.active
    km = active.keymaps
    # All keymaps found, register addon.
    if all(km_name in km for km_name in keymaps):
        return register(ready=True)

    # If not ready, defer registration up to 30 times or roughly 6 seconds.
    elif setdefault(keymaps_ensure, "retries", 30) > 0:
        keymaps_ensure.retries -= 1
        return defer_call(0.2, register)

    # If that fails, try default keyconfig as fallback.
    elif getattr(keymaps_ensure, "active", None) is None:
        kc = bpy.context.window_manager.keyconfigs
        keymaps_ensure.active = kc.default
        keymaps_ensure.retries = 30
        return defer_call(0.2, register)

    # When all else fails, print the active keymap and what keymaps exist.
    else:
        print("Textension: Failed in finding default keymaps")
        for km_name in keymaps:
            if km_name not in km:
                print("Keymap %s missing in %s." % (km_name, kc.active.name))
        print("Keymaps found:")
        print(km.keys())
def _update_cycles():
    if timers.is_registered(_timer):
        global _again
        _again = True
        return

    global _first
    _first = True

    global _old
    _old = node().interpolation

    global _new

    if _old == 'Linear':
        _new = 'Cubic'
    else:
        _new = 'Linear'

    timers.register(_timer)
Пример #6
0
def defer_call(delay, func, *args, **kwargs):
    from bpy.app.timers import register
    register(lambda: func(*args, **kwargs), first_interval=delay)
Пример #7
0
def register():
    for cls in classes:
        register_class(cls)
    nodeitems_utils.register_node_categories("AUDIONODES", node_categories)
    timers.register(handle_messages, first_interval=0.1, persistent=True)