I've written a custom addon for a few Pie menus but can't figure out how to load them together from a __init.py
Currently they are all split into these four files:
PIE_context.py, PIE_mode.py, PIE_uvcontext.py, PIE_uvmode.py
They all work when installed on their own, register shortcuts and everything. Despite reading around I can't figure out how to import them together from the __init__.py file below.
The shortest of the four PIE_uvcontext.pyis below that:
bl_info = {
"name": "Context Pie",
"blender": (2, 80, 0),
"category": "User Interface",
"version": (0, 1, 0, 0),
"location": "UV Editor, View3D, Mesh, Curve",
}
Blender imports
import bpy
#from bpy.props import *
from . import PIE_context
from . import PIE_mode
from . import PIE_uvcontext
from . import PIE_uvmode
addon_keymaps = []
def register():
PIE_context.register()
PIE_mode.register()
PIE_uvcontext.register()
PIE_uvmode.register()
def unregister():
PIE_context.unregister()
PIE_mode.unregister()
PIE_uvcontext.unregister()
PIE_uvmode.unregister()
if name == "main":
register()
bl_info = {
"name": "UV Pie: 'Shift + Right Mouse'",
"description": "UV Pie Menu",
"version": (0, 1, 2),
"blender": (2, 80, 0),
"location": "UV Editor",
"category": "Pie Menu"}
import bpy
from bpy.types import (
Header,
Menu,
Panel,
)
from bpy.app.translations import contexts as i18n_contexts
# Reference context menu: IMAGE_MT_uvs_context_menu
class IMAGE_PIE_MT_uvContext(Menu):
bl_label = ""
def draw(self, context):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
pie = layout.menu_pie()
# WEST
pie.operator("uv.pin").clear = False
# EAST
pie.operator("uv.pin", text='Unpin').clear = True
# SOUTH
pie.operator("uv.minimize_stretch")
# NORTH
pie.operator("uv.unwrap")
# NORTH-WEST
pie.operator("uv.pack_islands")
# NORTH-EAST
pie.operator("uv.average_islands_scale")
# SOUTH-WEST
pie.operator("mesh.mark_seam", text='Mark Seam').clear = False
# SOUTH-EAST
pie.operator("mesh.mark_seam", text='Clear Seam').clear = True
# Static face menu
pie.separator()
pie.separator()
dropdown = pie.column()
gap = dropdown.column()
gap.separator()
gap.scale_y = 8
dropdown_menu = dropdown.box().column()
dropdown_menu.scale_y=1
dropdown_menu.operator("uv.stitch")
dropdown_menu.operator("uv.weld")
dropdown_menu.operator("uv.remove_doubles")
classes = [
IMAGE_PIE_MT_uvContext]
addon_keymaps = []
def register():
for cls in classes:
bpy.utils.register_class(cls)
wm = bpy.context.window_manager
if wm.keyconfigs.addon:
km = wm.keyconfigs.addon.keymaps.new(name='UV Editor')
kmi = km.keymap_items.new('wm.call_menu_pie', 'RIGHTMOUSE', 'PRESS', shift=True)
kmi.properties.name = "IMAGE_PIE_MT_uvContext"
addon_keymaps.append((km, kmi))
def unregister():
for cls in classes:
bpy.utils.unregister_class(cls)
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
for km, kmi in addon_keymaps:
km.keymap_items.remove(kmi)
addon_keymaps.clear()
if __name__ == "__main__":
register()
Thanks!
__init__.pyfile. Perhaps that is just not the way to do it?!? – bastian Dec 03 '20 at 00:53