Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 35 additions & 5 deletions __init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
]


def register_keymaps(menumodes, panelmodes, keyconfig):
def register_keymaps(menumodes, panelmodes, keyconfig):
# Deactivating menus
for i in menumodes:
for key in keyconfig.keymaps[i].keymap_items:
Expand Down Expand Up @@ -90,8 +90,22 @@ def rebind_rmb(scene):
addon_prefs = bpy.context.preferences.addons[__package__].preferences
addon_prefs.menumodes = menumodes
addon_prefs.panelmodes = panelmodes
addon_prefs.rebind_3dview_keymap(bpy.context, addon_prefs.rmb_pan_rotate)
addon_prefs.rebind_switch_nav_rotate(bpy.context, addon_prefs.rmb_rotate_switch)

wm = bpy.context.window_manager
active_keyconfig = wm.keyconfigs.active
addon_keyconfig = wm.keyconfigs.addon
blender_keyconfig = wm.keyconfigs["Blender"]
user_keyconfig = wm.keyconfigs["Blender user"]

try:
addon_prefs.rebind_3dview_keymap(active_keyconfig, addon_prefs.rmb_pan_rotate)
addon_prefs.rebind_switch_nav_rotate(active_keyconfig, addon_keyconfig, addon_prefs.rmb_rotate_switch)
except KeyError:
addon_prefs.rebind_3dview_keymap(blender_keyconfig, addon_prefs.rmb_pan_rotate)
addon_prefs.rebind_switch_nav_rotate(blender_keyconfig, addon_keyconfig, addon_prefs.rmb_rotate_switch)
except KeyError:
addon_prefs.rebind_3dview_keymap(user_keyconfig, addon_prefs.rmb_pan_rotate)
addon_prefs.rebind_switch_nav_rotate(user_keyconfig, addon_keyconfig, addon_prefs.rmb_rotate_switch)


def register():
Expand Down Expand Up @@ -157,8 +171,24 @@ def unregister():
bpy.app.handlers.load_post.remove(rebind_rmb)

addon_prefs = bpy.context.preferences.addons[__package__].preferences
addon_prefs.rebind_switch_nav_rotate(bpy.context, False)
addon_prefs.rebind_3dview_keymap(bpy.context, False)
addon_prefs.menumodes = menumodes
addon_prefs.panelmodes = panelmodes

wm = bpy.context.window_manager
active_keyconfig = wm.keyconfigs.active
addon_keyconfig = wm.keyconfigs.addon
blender_keyconfig = wm.keyconfigs["Blender"]
user_keyconfig = wm.keyconfigs["Blender user"]

try:
addon_prefs.rebind_3dview_keymap(active_keyconfig, False)
addon_prefs.rebind_switch_nav_rotate(active_keyconfig, addon_keyconfig, False)
except KeyError:
addon_prefs.rebind_3dview_keymap(blender_keyconfig, False)
addon_prefs.rebind_switch_nav_rotate(blender_keyconfig, addon_keyconfig, False)
except KeyError:
addon_prefs.rebind_3dview_keymap(user_keyconfig, False)
addon_prefs.rebind_switch_nav_rotate(user_keyconfig, addon_keyconfig, False)

for cls in classes:
bpy.utils.unregister_class(cls)
Expand Down
71 changes: 42 additions & 29 deletions preferences.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,33 @@ def update_node_keymap(self, context):
key.active = addon_prefs.enable_for_node_editors


def update_rebind_3dview_keymap(self, context):
self.rebind_3dview_keymap(context, self.rmb_pan_rotate)
def update_rebind_3dview_keymap(self, context):
wm = context.window_manager
active_keyconfig = wm.keyconfigs.active
blender_keyconfig = wm.keyconfigs["Blender"]
user_keyconfig = wm.keyconfigs["Blender user"]

try:
self.rebind_3dview_keymap(active_keyconfig, self.rmb_pan_rotate)
except KeyError:
self.rebind_3dview_keymap(blender_keyconfig, self.rmb_pan_rotate)
except KeyError:
self.rebind_3dview_keymap(user_keyconfig, self.rmb_pan_rotate)

def update_rebind_switch_nav_rotate(self, context):
self.rebind_switch_nav_rotate(context, self.rmb_rotate_switch)

def update_rebind_switch_nav_rotate(self, context):
wm = context.window_manager
active_keyconfig = wm.keyconfigs.active
addon_keyconfig = wm.keyconfigs.addon
blender_keyconfig = wm.keyconfigs["Blender"]
user_keyconfig = wm.keyconfigs["Blender user"]

try:
self.rebind_switch_nav_rotate(active_keyconfig, addon_keyconfig, self.rmb_rotate_switch)
except KeyError:
self.rebind_switch_nav_rotate(blender_keyconfig, addon_keyconfig, self.rmb_rotate_switch)
except KeyError:
self.rebind_switch_nav_rotate(user_keyconfig, addon_keyconfig, self.rmb_rotate_switch)


class RightMouseNavigationPreferences(AddonPreferences):
Expand Down Expand Up @@ -152,13 +173,9 @@ class RightMouseNavigationPreferences(AddonPreferences):
update=update_rebind_switch_nav_rotate,
)

def rebind_3dview_keymap(self, context, isActive):
wm = context.window_manager
active_kc = wm.keyconfigs.active
addon_kc = wm.keyconfigs.addon

def rebind_3dview_keymap(self, keyconfig, isActive):
if isActive:
for key in active_kc.keymaps["3D View"].keymap_items:
for key in keyconfig.keymaps["3D View"].keymap_items:
if key.idname == "view3d.cursor3d" and key.type == "RIGHTMOUSE":
key.type = "MIDDLEMOUSE"
key.value = "CLICK"
Expand Down Expand Up @@ -201,7 +218,7 @@ def rebind_3dview_keymap(self, context, isActive):
if key.idname == "transform.translate" and key.type == "RIGHTMOUSE":
key.type = "MIDDLEMOUSE"
else:
for key in active_kc.keymaps["3D View"].keymap_items:
for key in keyconfig.keymaps["3D View"].keymap_items:
if key.idname == "view3d.cursor3d" and key.type == "MIDDLEMOUSE":
key.type = "RIGHTMOUSE"
key.value = "CLICK"
Expand Down Expand Up @@ -244,52 +261,48 @@ def rebind_3dview_keymap(self, context, isActive):
if key.idname == "transform.translate" and key.type == "MIDDLEMOUSE":
key.type = "RIGHTMOUSE"

def rebind_switch_nav_rotate(self, context, isActive):
wm = context.window_manager
active_kc = wm.keyconfigs.active
addon_kc = wm.keyconfigs.addon

def rebind_switch_nav_rotate(self, keyconfig, addon_kc, isActive):
if isActive:
for key in addon_kc.keymaps["3D View"].keymap_items:
if key.idname == "rmn.right_mouse_navigation":
key.type = "RIGHTMOUSE"
key.value = "PRESS"
key.alt = True
for key in active_kc.keymaps["3D View"].keymap_items:
for key in keyconfig.keymaps["3D View"].keymap_items:
if key.idname == "view3d.rotate" and key.type == "RIGHTMOUSE":
key.type = "RIGHTMOUSE"
key.value = "CLICK_DRAG"
key.alt = False
for i in menumodes:
for key in active_kc.keymaps[i].keymap_items:
for i in self.menumodes:
for key in keyconfig.keymaps[i].keymap_items:
if key.idname == "wm.call_menu" and key.type == "RIGHTMOUSE":
key.active = True
key.value = "CLICK"
for i in panelmodes:
for key in active_kc.keymaps[i].keymap_items:
if key.idname == "wm.call_panel" and key.type == "RIGHTMOUSE" and key.active:
key.active = False
for i in self.panelmodes:
for key in keyconfig.keymaps[i].keymap_items:
if key.idname == "wm.call_panel" and key.type == "RIGHTMOUSE":
key.active = True
key.value = "CLICK"
else:
for key in addon_kc.keymaps["3D View"].keymap_items:
if key.idname == "rmn.right_mouse_navigation":
key.type = "RIGHTMOUSE"
key.value = "PRESS"
key.alt = False
for key in active_kc.keymaps["3D View"].keymap_items:
for key in keyconfig.keymaps["3D View"].keymap_items:
if key.idname == "view3d.rotate" and key.type == "RIGHTMOUSE":
key.type = "RIGHTMOUSE"
key.value = "CLICK_DRAG"
key.alt = True
for i in menumodes:
for key in active_kc.keymaps[i].keymap_items:
for i in self.menumodes:
for key in keyconfig.keymaps[i].keymap_items:
if key.idname == "wm.call_menu" and key.type == "RIGHTMOUSE":
key.active = False
key.value = "PRESS"
for i in panelmodes:
for key in active_kc.keymaps[i].keymap_items:
for i in self.panelmodes:
for key in keyconfig.keymaps[i].keymap_items:
if key.idname == "wm.call_panel" and key.type == "RIGHTMOUSE":
key.active = True
key.active = False
key.value = "PRESS"

def draw(self, context):
Expand Down
Loading