Rework/New: Camera, 3D View, Window Pies #8

Merged
Demeter Dzadik merged 7 commits from view_pie_rework into main 2024-08-21 03:23:39 +02:00
Showing only changes of commit 66cc922af2 - Show all commits

View File

@ -5,67 +5,57 @@
from bpy.types import Menu, Operator
from .hotkeys import register_hotkey
from sys import platform
class PIE_MT_view_pie(Menu):
bl_idname = "PIE_MT_view_pie"
bl_label = "View Pie"
class PIE_MT_camera_pie(Menu):
bl_idname = "PIE_MT_camera_pie"
bl_label = "Camera Pie"
def draw(self, context):
pie = self.layout.menu_pie()
scene = context.scene
space = context.area.spaces.active
camera = get_current_camera(context)
# 4 - LEFT
pie.operator("view3d.camera_to_view", text="Snap Camera to View", icon='CON_CAMERASOLVER')
# 6 - RIGHT
pie.operator('view3d.view_camera', text="View Camera", icon='VIEW_CAMERA')
pie.operator('view3d.view_camera', text="View Camera", icon='VIEW_CAMERA_UNSELECTED')
# 2 - BOTTOM
space = context.area.spaces.active
if space.local_view:
pie.operator("view3d.localview", text="Leave Local View", icon='SOLO_OFF').frame_selected=False
box = pie.box().column(align=True)
row = box.row()
if space.type == 'VIEW_3D' and space.use_local_camera:
row.prop(space, 'camera')
else:
pie.operator("view3d.localview", text="Enter Local View", icon='SOLO_ON').frame_selected=False
row.prop(scene, 'camera')
if camera:
box.prop(camera.data, 'lens')
box.prop(camera.data, 'sensor_width')
row = box.row(align=True)
row.prop(camera.data, 'show_passepartout', text="")
row.prop(camera.data, 'passepartout_alpha')
row = box.row(align=True)
row.prop(camera.data, 'show_composition_thirds')
row.prop(camera.data, 'show_composition_center')
row.prop(camera.data, 'show_composition_center_diagonal', text="Diagonal")
# 8 - TOP
pie.operator("screen.region_quadview", text="Toggle Quad View", icon='SNAP_VERTEX')
# 7 - TOP - LEFT
camera = get_current_camera(context)
word = "Lock"
icon = 'UNLOCKED'
if all(camera.lock_rotation) and all(camera.lock_location):
word = "Unlock"
icon = 'LOCKED'
pie.operator('object.lock_current_camera', icon=icon, text=f"{word} Camera Transforms")
# 9 - TOP - RIGHT
pie.operator('view3d.navigate', text="Fly", icon='TRACKER')
# 1 - BOTTOM - LEFT
icon = 'LOCKED' if context.space_data.lock_camera else 'UNLOCKED'
pie.prop(context.space_data, 'lock_camera', icon=icon)
# 3 - BOTTOM - RIGHT
pie.operator('view3d.object_as_camera', icon='VIEW_CAMERA_UNSELECTED')
class PIE_MT_window_pie(Menu):
bl_idname = "PIE_MT_window_pie"
bl_label = "Window Pie"
def draw(self, context):
pie = self.layout.menu_pie()
# 4 - LEFT
pie.separator()
# 6 - RIGHT
pie.operator("screen.screen_full_area", text="Solo Area", icon='PIVOT_BOUNDBOX')
# 2 - BOTTOM
pie.separator()
# 8 - TOP
pie.operator("wm.window_fullscreen_toggle", text="Window Fullscreen", icon='FULLSCREEN_ENTER')
# 7 - TOP - LEFT
pie.separator()
if camera:
word = "Lock"
icon = 'UNLOCKED'
if all(camera.lock_rotation) and all(camera.lock_location):
word = "Unlock"
icon = 'LOCKED'
pie.operator('object.lock_current_camera', icon=icon, text=f"{word} Camera Transforms")
else:
pie.separator()
# 9 - TOP - RIGHT
pie.operator("screen.screen_full_area", text="Maximize Area", icon='PIVOT_BOUNDBOX').use_hide_panels=True
pie.operator('view3d.object_as_camera', icon='VIEW_CAMERA')
# 1 - BOTTOM - LEFT
pie.separator()
# 3 - BOTTOM - RIGHT
pie.separator()
class OBJECT_OT_lock_current_camera(Operator):
@ -98,6 +88,61 @@ class OBJECT_OT_lock_current_camera(Operator):
return {'FINISHED'}
class PIE_MT_view_pie(Menu):
bl_idname = "PIE_MT_view_pie"
bl_label = "View Pie"
def draw(self, context):
pie = self.layout.menu_pie()
# 4 - LEFT
pie.operator('view3d.render_border', text="Set Render Border", icon='OBJECT_HIDDEN')
# 6 - RIGHT
pie.operator('view3d.view_selected', text="Frame Selected", icon='ZOOM_SELECTED')
# 2 - BOTTOM
pie.operator('view3d.navigate', text="Fly", icon='TRACKER')
# 8 - TOP
pie.operator("screen.region_quadview", text="Toggle Quad View", icon='SNAP_VERTEX')
# 7 - TOP - LEFT
pie.operator('view3d.clip_border', text="Toggle Clipping Border", icon='MOD_BEVEL')
# 9 - TOP - RIGHT
pie.operator('view3d.view_all', text="Frame All", icon='VIEWZOOM').center=False
# 1 - BOTTOM - LEFT
pie.operator('view3d.clear_render_border', text="Clear Render Border", icon='X')
# 3 - BOTTOM - RIGHT
space = context.area.spaces.active
if space.local_view:
pie.operator("view3d.localview", text="Leave Local View", icon='SOLO_OFF').frame_selected=False
else:
pie.operator("view3d.localview", text="Enter Local View", icon='SOLO_ON').frame_selected=False
class PIE_MT_window_pie(Menu):
bl_idname = "PIE_MT_window_pie"
bl_label = "Window Pie"
def draw(self, context):
pie = self.layout.menu_pie()
# 4 - LEFT
pie.operator('screen.userpref_show', text="Preferences", icon='PREFERENCES')
# 6 - RIGHT
pie.operator("screen.screen_full_area", text="Solo Area", icon='PIVOT_BOUNDBOX')
# 2 - BOTTOM
if platform == 'win32':
pie.operator("wm.console_toggle", icon='CONSOLE')
else:
pie.separator()
# 8 - TOP
pie.operator("wm.window_fullscreen_toggle", text="Window Fullscreen", icon='FULLSCREEN_ENTER')
# 7 - TOP - LEFT
pie.separator()
# 9 - TOP - RIGHT
pie.operator("screen.screen_full_area", text="Maximize Area", icon='PIVOT_BOUNDBOX').use_hide_panels=True
# 1 - BOTTOM - LEFT
# 3 - BOTTOM - RIGHT
def get_current_camera(context):
space = context.area.spaces.active
if space.type == 'VIEW_3D' and space.use_local_camera:
@ -106,6 +151,7 @@ def get_current_camera(context):
registry = (
PIE_MT_camera_pie,
PIE_MT_view_pie,
PIE_MT_window_pie,
OBJECT_OT_lock_current_camera
@ -115,13 +161,19 @@ registry = (
def register():
register_hotkey(
'wm.call_menu_pie',
op_kwargs={'name': 'PIE_MT_view_pie'},
op_kwargs={'name': 'PIE_MT_camera_pie'},
hotkey_kwargs={'type': "Q", 'value': "PRESS", 'alt': True},
key_cat="3D View",
)
register_hotkey(
'wm.call_menu_pie',
op_kwargs={'name': 'PIE_MT_window_pie'},
op_kwargs={'name': 'PIE_MT_view_pie'},
hotkey_kwargs={'type': "Q", 'value': "PRESS", 'alt': True, 'ctrl': True},
key_cat="3D View",
)
register_hotkey(
'wm.call_menu_pie',
op_kwargs={'name': 'PIE_MT_window_pie'},
hotkey_kwargs={'type': "SPACE", 'value': "PRESS", 'ctrl': True},
key_cat="3D View",
)