pie_menus_official: remove redundant addon/merge into viewport pies: T67995
This commit is contained in:
parent
0d50214d72
commit
746b43f114
|
@ -1,258 +0,0 @@
|
|||
# ##### BEGIN GPL LICENSE BLOCK #####
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
import bpy
|
||||
from bpy.props import (
|
||||
BoolProperty,
|
||||
PointerProperty,
|
||||
)
|
||||
from bpy.types import (
|
||||
PropertyGroup,
|
||||
AddonPreferences,
|
||||
)
|
||||
|
||||
|
||||
bl_info = {
|
||||
"name": "UI Pie Menu Official",
|
||||
"author": "Antony Riakiotakis, Sebastian Koenig",
|
||||
"version": (1, 1, 6),
|
||||
"blender": (2, 80, 0),
|
||||
"description": "Individual Pie Menu Activation List",
|
||||
"location": "Addons Preferences",
|
||||
"warning": "",
|
||||
"wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/Py/"
|
||||
"Scripts/3D_interaction/Pie_Menu",
|
||||
"category": "Pie Menu"
|
||||
}
|
||||
|
||||
|
||||
sub_modules_names = (
|
||||
"pie_object_modes_of",
|
||||
"pie_view_of",
|
||||
"pie_shade_of",
|
||||
"pie_manipulator_of",
|
||||
"pie_pivot_of",
|
||||
# "pie_snap_of",
|
||||
# "pie_clip_marker_of",
|
||||
)
|
||||
|
||||
|
||||
sub_modules = [__import__(__package__ + "." + submod, {}, {}, submod) for submod in sub_modules_names]
|
||||
sub_modules.sort(key=lambda mod: (mod.bl_info['category'], mod.bl_info['name']))
|
||||
|
||||
|
||||
def _get_pref_class(mod):
|
||||
import inspect
|
||||
|
||||
for obj in vars(mod).values():
|
||||
if inspect.isclass(obj) and issubclass(obj, PropertyGroup):
|
||||
if hasattr(obj, 'bl_idname') and obj.bl_idname == mod.__name__:
|
||||
return obj
|
||||
|
||||
|
||||
def get_addon_preferences(name=''):
|
||||
"""Acquisition and registration"""
|
||||
addons = bpy.context.preferences.addons
|
||||
if __name__ not in addons: # wm.read_factory_settings()
|
||||
return None
|
||||
addon_prefs = addons[__name__].preferences
|
||||
if name:
|
||||
if not hasattr(addon_prefs, name):
|
||||
for mod in sub_modules:
|
||||
if mod.__name__.split('.')[-1] == name:
|
||||
cls = _get_pref_class(mod)
|
||||
if cls:
|
||||
prop = PointerProperty(type=cls)
|
||||
create_property(UIToolsPreferences, name, prop)
|
||||
bpy.utils.unregister_class(UIToolsPreferences)
|
||||
bpy.utils.register_class(UIToolsPreferences)
|
||||
return getattr(addon_prefs, name, None)
|
||||
else:
|
||||
return addon_prefs
|
||||
|
||||
def create_property(cls, name, prop):
|
||||
if not hasattr(cls, '__annotations__'):
|
||||
cls.__annotations__ = dict()
|
||||
cls.__annotations__[name] = prop
|
||||
|
||||
|
||||
def register_submodule(mod):
|
||||
mod.register()
|
||||
mod.__addon_enabled__ = True
|
||||
|
||||
|
||||
def unregister_submodule(mod):
|
||||
if mod.__addon_enabled__:
|
||||
mod.unregister()
|
||||
mod.__addon_enabled__ = False
|
||||
|
||||
prefs = get_addon_preferences()
|
||||
name = mod.__name__.split('.')[-1]
|
||||
if hasattr(UIToolsPreferences, name):
|
||||
delattr(UIToolsPreferences, name)
|
||||
if prefs:
|
||||
bpy.utils.unregister_class(UIToolsPreferences)
|
||||
bpy.utils.register_class(UIToolsPreferences)
|
||||
if name in prefs:
|
||||
del prefs[name]
|
||||
|
||||
|
||||
class UIToolsPreferences(AddonPreferences):
|
||||
bl_idname = __name__
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
for mod in sub_modules:
|
||||
mod_name = mod.__name__.split('.')[-1]
|
||||
info = mod.bl_info
|
||||
column = layout.column()
|
||||
box = column.box()
|
||||
|
||||
# first stage
|
||||
expand = getattr(self, 'show_expanded_' + mod_name)
|
||||
icon = 'TRIA_DOWN' if expand else 'TRIA_RIGHT'
|
||||
col = box.column()
|
||||
row = col.row()
|
||||
sub = row.row()
|
||||
sub.context_pointer_set('addon_prefs', self)
|
||||
op = sub.operator('wm.context_toggle', text='', icon=icon,
|
||||
emboss=False)
|
||||
op.data_path = 'addon_prefs.show_expanded_' + mod_name
|
||||
sub.label(text='{}: {}'.format(info['category'], info['name']))
|
||||
sub = row.row()
|
||||
sub.alignment = 'RIGHT'
|
||||
if info.get('warning'):
|
||||
sub.label(text='', icon='ERROR')
|
||||
sub.prop(self, 'use_' + mod_name, text='')
|
||||
|
||||
# The second stage
|
||||
if expand:
|
||||
if info.get('description'):
|
||||
split = col.row().split(factor=0.15)
|
||||
split.label(text='Description:')
|
||||
split.label(text=info['description'])
|
||||
if info.get('location'):
|
||||
split = col.row().split(factor=0.15)
|
||||
split.label(text='Location:')
|
||||
split.label(text=info['location'])
|
||||
"""
|
||||
if info.get('author'):
|
||||
split = col.row().split(factor=0.15)
|
||||
split.label(text='Author:')
|
||||
split.label(text=info['author'])
|
||||
"""
|
||||
if info.get('version'):
|
||||
split = col.row().split(factor=0.15)
|
||||
split.label(text='Version:')
|
||||
split.label(text='.'.join(str(x) for x in info['version']),
|
||||
translate=False)
|
||||
if info.get('warning'):
|
||||
split = col.row().split(factor=0.15)
|
||||
split.label(text='Warning:')
|
||||
split.label(text=' ' + info['warning'], icon='ERROR')
|
||||
|
||||
tot_row = int(bool(info.get('wiki_url')))
|
||||
if tot_row:
|
||||
split = col.row().split(factor=0.15)
|
||||
split.label(text='Internet:')
|
||||
if info.get('wiki_url'):
|
||||
op = split.operator('wm.url_open',
|
||||
text='Documentation', icon='HELP')
|
||||
op.url = info.get('wiki_url')
|
||||
for i in range(4 - tot_row):
|
||||
split.separator()
|
||||
|
||||
# Details and settings
|
||||
if getattr(self, 'use_' + mod_name):
|
||||
prefs = get_addon_preferences(mod_name)
|
||||
|
||||
if prefs and hasattr(prefs, 'draw'):
|
||||
box = box.column()
|
||||
prefs.layout = box
|
||||
try:
|
||||
prefs.draw(context)
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
box.label(text='Error (see console)', icon='ERROR')
|
||||
del prefs.layout
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="End of Pie Menu Activations", icon="FILE_PARENT")
|
||||
|
||||
|
||||
for mod in sub_modules:
|
||||
info = mod.bl_info
|
||||
mod_name = mod.__name__.split('.')[-1]
|
||||
|
||||
def gen_update(mod):
|
||||
def update(self, context):
|
||||
enabled = getattr(self, 'use_' + mod.__name__.split('.')[-1])
|
||||
if enabled:
|
||||
register_submodule(mod)
|
||||
else:
|
||||
unregister_submodule(mod)
|
||||
mod.__addon_enabled__ = enabled
|
||||
return update
|
||||
|
||||
create_property(
|
||||
UIToolsPreferences,
|
||||
'use_' + mod_name,
|
||||
BoolProperty(
|
||||
name=info['name'],
|
||||
description=info.get('description', ''),
|
||||
update=gen_update(mod),
|
||||
default=True,
|
||||
))
|
||||
|
||||
create_property(
|
||||
UIToolsPreferences,
|
||||
'show_expanded_' + mod_name,
|
||||
BoolProperty())
|
||||
|
||||
|
||||
classes = (
|
||||
UIToolsPreferences,
|
||||
)
|
||||
|
||||
|
||||
def register():
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
|
||||
prefs = get_addon_preferences()
|
||||
for mod in sub_modules:
|
||||
if not hasattr(mod, '__addon_enabled__'):
|
||||
mod.__addon_enabled__ = False
|
||||
name = mod.__name__.split('.')[-1]
|
||||
if getattr(prefs, 'use_' + name):
|
||||
register_submodule(mod)
|
||||
|
||||
|
||||
def unregister():
|
||||
for mod in sub_modules:
|
||||
if mod.__addon_enabled__:
|
||||
unregister_submodule(mod)
|
||||
|
||||
for cls in reversed(classes):
|
||||
bpy.utils.unregister_class(cls)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
|
@ -1,327 +0,0 @@
|
|||
# ##### BEGIN GPL LICENSE BLOCK #####
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
# <pep8 compliant>
|
||||
|
||||
bl_info = {
|
||||
"name": "Clip Editor Pies: Key: 'hotkey list Below'",
|
||||
"description": "Clip Editor Pies",
|
||||
"author": "Antony Riakiotakis, Sebastian Koenig",
|
||||
"version": (0, 1, 1),
|
||||
"blender": (2, 77, 0),
|
||||
"location": "Q, W, Shift W, E, Shift S, Shift A",
|
||||
"warning": "",
|
||||
"wiki_url": "",
|
||||
"category": "Pie Menu"
|
||||
}
|
||||
|
||||
import bpy
|
||||
from bpy.types import Menu
|
||||
|
||||
|
||||
class CLIP_MT_refine_pie(Menu):
|
||||
# Refinement Options
|
||||
bl_label = "Refine Intrinsics"
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
space = context.space_data
|
||||
return (space.type == 'CLIP_EDITOR') and space.clip
|
||||
|
||||
def draw(self, context):
|
||||
clip = context.space_data.clip
|
||||
settings = clip.tracking.settings
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.prop(settings, "refine_intrinsics", expand=True)
|
||||
|
||||
|
||||
class CLIP_MT_geometry_reconstruction(Menu):
|
||||
# Geometry Reconstruction
|
||||
bl_label = "Reconstruction"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.operator("clip.bundles_to_mesh", icon='MESH_DATA')
|
||||
pie.operator("clip.track_to_empty", icon='EMPTY_DATA')
|
||||
|
||||
|
||||
class CLIP_MT_proxy_pie(Menu):
|
||||
# Proxy Controls
|
||||
bl_label = "Proxy Size"
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
space = context.space_data
|
||||
return (space.type == 'CLIP_EDITOR') and space.clip
|
||||
|
||||
def draw(self, context):
|
||||
space = context.space_data
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.prop(space.clip, "use_proxy", text="Use Proxy")
|
||||
pie.prop(space.clip_user, "proxy_render_size", expand=True)
|
||||
|
||||
|
||||
class CLIP_MT_display_pie(Menu):
|
||||
# Display Options
|
||||
bl_label = "Marker Display"
|
||||
|
||||
def draw(self, context):
|
||||
space = context.space_data
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.prop(space, "show_names", text="Show Track Info", icon='WORDWRAP_ON')
|
||||
pie.prop(space, "show_disabled", text="Show Disabled Tracks", icon='HIDE_OFF')
|
||||
pie.prop(space, "show_marker_search", text="Display Search Area", icon='VIEWZOOM')
|
||||
pie.prop(space, "show_marker_pattern", text="Display Pattern Area", icon='BORDERMOVE')
|
||||
|
||||
|
||||
class CLIP_MT_marker_pie(Menu):
|
||||
# Settings for the individual markers
|
||||
bl_label = "Marker Settings"
|
||||
|
||||
def draw(self, context):
|
||||
clip = context.space_data.clip
|
||||
tracky = getattr(getattr(clip, "tracking", None), "tracks", None)
|
||||
track_active = tracky.active if tracky else None
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
prop = pie.operator("wm.context_set_enum", text="Loc", icon='OUTLINER_DATA_EMPTY')
|
||||
prop.data_path = "space_data.clip.tracking.tracks.active.motion_model"
|
||||
prop.value = "Loc"
|
||||
prop = pie.operator("wm.context_set_enum", text="Affine", icon='OUTLINER_DATA_LATTICE')
|
||||
prop.data_path = "space_data.clip.tracking.tracks.active.motion_model"
|
||||
prop.value = "Affine"
|
||||
|
||||
pie.operator("clip.track_settings_to_track", icon='COPYDOWN')
|
||||
pie.operator("clip.track_settings_as_default", icon='SETTINGS')
|
||||
|
||||
if track_active:
|
||||
pie.prop(track_active, "use_normalization", text="Normalization")
|
||||
pie.prop(track_active, "use_brute", text="Use Brute Force")
|
||||
pie.prop(track_active, "use_blue_channel", text="Blue Channel")
|
||||
|
||||
if track_active.pattern_match == "PREV_FRAME":
|
||||
prop = pie.operator("wm.context_set_enum", text="Match Previous", icon='KEYINGSET')
|
||||
prop.data_path = "space_data.clip.tracking.tracks.active.pattern_match"
|
||||
prop.value = 'KEYFRAME'
|
||||
else:
|
||||
prop = pie.operator("wm.context_set_enum", text="Match Keyframe", icon='KEY_HLT')
|
||||
prop.data_path = "space_data.clip.tracking.tracks.active.pattern_match"
|
||||
prop.value = 'PREV_FRAME'
|
||||
|
||||
|
||||
class CLIP_MT_tracking_pie(Menu):
|
||||
# Tracking Operators
|
||||
bl_label = "Tracking"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
prop = pie.operator("clip.track_markers", icon='PLAY_REVERSE')
|
||||
prop.backwards = True
|
||||
prop.sequence = True
|
||||
prop = pie.operator("clip.track_markers", icon='PLAY')
|
||||
prop.backwards = False
|
||||
prop.sequence = True
|
||||
|
||||
pie.operator("clip.disable_markers", icon='RESTRICT_VIEW_ON')
|
||||
pie.operator("clip.detect_features", icon='ZOOM_SELECTED')
|
||||
|
||||
pie.operator("clip.clear_track_path", icon='BACK').action = 'UPTO'
|
||||
pie.operator("clip.clear_track_path", icon='FORWARD').action = 'REMAINED'
|
||||
|
||||
pie.operator("clip.refine_markers", icon='LOOP_BACK').backwards = True
|
||||
pie.operator("clip.refine_markers", icon='LOOP_FORWARDS').backwards = False
|
||||
|
||||
|
||||
class CLIP_MT_clipsetup_pie(Menu):
|
||||
# Setup the clip display options
|
||||
bl_label = "Clip and Display Setup"
|
||||
|
||||
def draw(self, context):
|
||||
space = context.space_data
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.operator("clip.reload", text="Reload Footage", icon='FILE_REFRESH')
|
||||
pie.operator("clip.prefetch", text="Prefetch Footage", icon='LOOP_FORWARDS')
|
||||
|
||||
pie.prop(space, "use_mute_footage", text="Mute Footage", icon='MUTE_IPO_ON')
|
||||
pie.prop(space.clip_user, "use_render_undistorted", text="Render Undistorted")
|
||||
pie.operator("clip.set_scene_frames", text="Set Scene Frames", icon='SCENE_DATA')
|
||||
pie.operator("wm.call_menu_pie", text="Marker Display", icon='PLUS').name = "CLIP_MT_display_pie"
|
||||
pie.operator("clip.set_active_clip", icon='CLIP')
|
||||
|
||||
pie_proxy = layout.menu_pie()
|
||||
pie_proxy.enabled = space.clip is not None
|
||||
pie_proxy.operator("wm.call_menu_pie", text="Proxy", icon='PLUS').name = "CLIP_MT_proxy_pie"
|
||||
|
||||
|
||||
class CLIP_MT_solver_pie(Menu):
|
||||
# Operators to solve the scene
|
||||
bl_label = "Solving"
|
||||
|
||||
def draw(self, context):
|
||||
clip = context.space_data.clip
|
||||
settings = getattr(getattr(clip, "tracking", None), "settings", None)
|
||||
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.operator("clip.create_plane_track", icon='MESH_PLANE')
|
||||
pie.operator("clip.solve_camera", text="Solve Camera", icon='OUTLINER_OB_CAMERA')
|
||||
|
||||
if settings:
|
||||
pie.operator("wm.call_menu_pie", text="Refinement",
|
||||
icon='CAMERA_DATA').name = "CLIP_MT_refine_pie"
|
||||
pie.prop(settings, "use_tripod_solver", text="Tripod Solver")
|
||||
|
||||
pie.operator("clip.set_solver_keyframe", text="Set Keyframe A",
|
||||
icon='KEY_HLT').keyframe = 'KEYFRAME_A'
|
||||
pie.operator("clip.set_solver_keyframe", text="Set Keyframe B",
|
||||
icon='KEY_HLT').keyframe = 'KEYFRAME_B'
|
||||
|
||||
prop = pie.operator("clip.clean_tracks", icon='STICKY_UVS_DISABLE')
|
||||
pie.operator("clip.filter_tracks", icon='FILTER')
|
||||
prop.frames = 15
|
||||
prop.error = 2
|
||||
|
||||
|
||||
class CLIP_MT_reconstruction_pie(Menu):
|
||||
# Scene Reconstruction
|
||||
bl_label = "Reconstruction"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.operator("clip.set_viewport_background", text="Set Viewport Background", icon='SCENE_DATA')
|
||||
pie.operator("clip.setup_tracking_scene", text="Setup Tracking Scene", icon='SCENE_DATA')
|
||||
|
||||
pie.operator("clip.set_plane", text="Setup Floor", icon='MESH_PLANE')
|
||||
pie.operator("clip.set_origin", text="Set Origin", icon='MANIPUL')
|
||||
|
||||
pie.operator("clip.set_axis", text="Set X Axis", icon='AXIS_FRONT').axis = 'X'
|
||||
pie.operator("clip.set_axis", text="Set Y Axis", icon='AXIS_SIDE').axis = 'Y'
|
||||
|
||||
pie.operator("clip.set_scale", text="Set Scale", icon='ARROW_LEFTRIGHT')
|
||||
pie.operator("wm.call_menu_pie", text="Reconstruction",
|
||||
icon='MESH_DATA').name = "CLIP_MT_geometry_reconstruction"
|
||||
|
||||
|
||||
class CLIP_MT_timecontrol_pie(Menu):
|
||||
# Time Controls
|
||||
bl_label = "Time Control"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
pie = layout.menu_pie()
|
||||
|
||||
pie.operator("screen.frame_jump", text="Jump to Startframe", icon='TRIA_LEFT').end = False
|
||||
pie.operator("screen.frame_jump", text="Jump to Endframe", icon='TRIA_RIGHT').end = True
|
||||
|
||||
pie.operator("clip.frame_jump", text="Start of Track", icon='REW').position = 'PATHSTART'
|
||||
pie.operator("clip.frame_jump", text="End of Track", icon='FF').position = 'PATHEND'
|
||||
|
||||
pie.operator("screen.animation_play", text="Playback Backwards", icon='PLAY_REVERSE').reverse = True
|
||||
pie.operator("screen.animation_play", text="Playback Forwards", icon='PLAY').reverse = False
|
||||
|
||||
pie.operator("screen.frame_offset", text="Previous Frame", icon='TRIA_LEFT').delta = -1
|
||||
pie.operator("screen.frame_offset", text="Next Frame", icon='TRIA_RIGHT').delta = 1
|
||||
|
||||
|
||||
addon_keymaps = []
|
||||
|
||||
classes = (
|
||||
CLIP_MT_geometry_reconstruction,
|
||||
CLIP_MT_tracking_pie,
|
||||
CLIP_MT_display_pie,
|
||||
CLIP_MT_proxy_pie,
|
||||
CLIP_MT_marker_pie,
|
||||
CLIP_MT_solver_pie,
|
||||
CLIP_MT_refine_pie,
|
||||
CLIP_MT_reconstruction_pie,
|
||||
CLIP_MT_clipsetup_pie,
|
||||
CLIP_MT_timecontrol_pie,
|
||||
)
|
||||
|
||||
|
||||
def register():
|
||||
addon_keymaps.clear()
|
||||
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="Clip", space_type='CLIP_EDITOR')
|
||||
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'Q', 'PRESS')
|
||||
kmi.properties.name = "CLIP_MT_marker_pie"
|
||||
addon_keymaps.append((km, kmi))
|
||||
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'W', 'PRESS')
|
||||
kmi.properties.name = "CLIP_MT_clipsetup_pie"
|
||||
addon_keymaps.append((km, kmi))
|
||||
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'E', 'PRESS')
|
||||
kmi.properties.name = "CLIP_MT_tracking_pie"
|
||||
addon_keymaps.append((km, kmi))
|
||||
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'S', 'PRESS', shift=True)
|
||||
kmi.properties.name = "CLIP_MT_solver_pie"
|
||||
addon_keymaps.append((km, kmi))
|
||||
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'W', 'PRESS', shift=True)
|
||||
kmi.properties.name = "CLIP_MT_reconstruction_pie"
|
||||
addon_keymaps.append((km, kmi))
|
||||
|
||||
kmi = km.keymap_items.new("wm.call_menu_pie", 'A', 'PRESS', shift=True)
|
||||
kmi.properties.name = "CLIP_MT_timecontrol_pie"
|
||||
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()
|
|
@ -1,92 +0,0 @@
|
|||
|
||||
bl_info = {
|
||||
"name": "Manipulator Menu: Key: 'Ctrl Space'",
|
||||
"description": "Manipulator Modes",
|
||||
"author": "Antony Riakiotakis, Sebastian Koenig",
|
||||
"version": (0, 1, 1),
|
||||
"blender": (2, 77, 0),
|
||||
"location": "Ctrl Space",
|
||||
"warning": "",
|
||||
"wiki_url": "",
|
||||
"category": "3d View"
|
||||
}
|
||||
|
||||
import bpy
|
||||
from bpy.types import (
|
||||
Menu,
|
||||
Operator,
|
||||
)
|
||||
from bpy.props import (
|
||||
EnumProperty,
|
||||
)
|
||||
|
||||
|
||||
# Pie Manipulator Mode - Ctrl Space
|
||||
class VIEW3D_manipulator_set_of(Operator):
|
||||
bl_label = "Set Manipulator"
|
||||
bl_idname = "view3d.manipulator_set"
|
||||
|
||||
type: EnumProperty(
|
||||
name="Type",
|
||||
items=(('TRANSLATE', "Translate", "Use the manipulator for movement transformations"),
|
||||
('ROTATE', "Rotate", "Use the manipulator for rotation transformations"),
|
||||
('SCALE', "Scale", "Use the manipulator for scale transformations"),
|
||||
),
|
||||
)
|
||||
|
||||
def execute(self, context):
|
||||
# show manipulator if user selects an option
|
||||
context.space_data.show_gizmo = True
|
||||
context.space_data.transform_manipulators = {self.type}
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class VIEW3D_MT_manipulator_of(Menu):
|
||||
bl_label = "Manipulator"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
pie = layout.menu_pie()
|
||||
pie.operator("wm.tool_set_by_id", icon='NONE', text="Translate").name = "builtin.move"
|
||||
pie.operator("wm.tool_set_by_id", icon='NONE', text="Rotate").name = "builtin.rotate"
|
||||
pie.operator("wm.tool_set_by_id", icon='NONE', text="Scale").name = "builtin.scale"
|
||||
pie.prop(context.space_data, "show_gizmo")
|
||||
|
||||
|
||||
classes = (
|
||||
VIEW3D_manipulator_set_of,
|
||||
VIEW3D_MT_manipulator_of,
|
||||
)
|
||||
|
||||
addon_keymaps = []
|
||||
|
||||
|
||||
def register():
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
wm = bpy.context.window_manager
|
||||
|
||||
if wm.keyconfigs.addon:
|
||||
# Align
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Non-modal')
|
||||
kmi = km.keymap_items.new('wm.call_menu_pie', 'SPACE', 'PRESS', ctrl=True)
|
||||
kmi.properties.name = VIEW3D_MT_manipulator_of.__name__
|
||||
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()
|
|
@ -1,69 +0,0 @@
|
|||
|
||||
bl_info = {
|
||||
"name": "Mode Set: Key: 'Tab'",
|
||||
"description": "Object Modes",
|
||||
"author": "Antony Riakiotakis, Sebastian Koenig",
|
||||
"version": (0, 1, 1),
|
||||
"blender": (2, 77, 0),
|
||||
"location": "Tab key",
|
||||
"warning": "",
|
||||
"wiki_url": "",
|
||||
"category": "3d View"
|
||||
}
|
||||
|
||||
import bpy
|
||||
from bpy.types import Menu
|
||||
|
||||
|
||||
# Pie Object Mode - Tab
|
||||
class VIEW3D_MT_object_mode_of(Menu):
|
||||
bl_label = "Mode"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
pie = layout.menu_pie()
|
||||
pie.operator_enum("OBJECT_OT_mode_set", "mode")
|
||||
|
||||
|
||||
classes = (
|
||||
VIEW3D_MT_object_mode_of,
|
||||
)
|
||||
|
||||
addon_keymaps = []
|
||||
|
||||
|
||||
def register():
|
||||
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
wm = bpy.context.window_manager
|
||||
|
||||
if wm.keyconfigs.addon:
|
||||
# Object Modes
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Non-modal')
|
||||
kmi = km.keymap_items.new('wm.call_menu_pie', 'TAB', 'PRESS')
|
||||
kmi.properties.name = VIEW3D_MT_object_mode_of.__name__
|
||||
addon_keymaps.append((km, kmi))
|
||||
|
||||
# Grease Pencil Edit Modes
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Grease Pencil Stroke Edit Mode')
|
||||
kmi = km.keymap_items.new('wm.call_menu_pie', 'TAB', 'PRESS')
|
||||
kmi.properties.name = VIEW3D_MT_object_mode_of.__name__
|
||||
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()
|
|
@ -1,64 +0,0 @@
|
|||
|
||||
bl_info = {
|
||||
"name": "Pivot Menu: Key: '. key'",
|
||||
"description": "Manipulator Modes",
|
||||
"author": "Antony Riakiotakis, Sebastian Koenig",
|
||||
"version": (0, 1, 1),
|
||||
"blender": (2, 77, 0),
|
||||
"location": ". key",
|
||||
"warning": "",
|
||||
"wiki_url": "",
|
||||
"category": "3d View"
|
||||
}
|
||||
|
||||
import bpy
|
||||
from bpy.types import Menu
|
||||
|
||||
|
||||
# Pie Pivot Mode - . key
|
||||
class VIEW3D_MT_pivot_of(Menu):
|
||||
bl_label = "Pivot"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
pie = layout.menu_pie()
|
||||
pie.prop(context.scene.tool_settings, "transform_pivot_point", expand=True)
|
||||
if context.active_object and context.active_object.mode == 'OBJECT':
|
||||
pie.prop(context.scene.tool_settings, "use_transform_pivot_point_align", text="Center Points")
|
||||
|
||||
|
||||
classes = (
|
||||
VIEW3D_MT_pivot_of,
|
||||
)
|
||||
|
||||
addon_keymaps = []
|
||||
|
||||
|
||||
def register():
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
wm = bpy.context.window_manager
|
||||
|
||||
if wm.keyconfigs.addon:
|
||||
# Align
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Non-modal')
|
||||
kmi = km.keymap_items.new('wm.call_menu_pie', 'PERIOD', 'PRESS')
|
||||
kmi.properties.name = VIEW3D_MT_pivot_of.__name__
|
||||
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()
|
|
@ -1,70 +0,0 @@
|
|||
|
||||
bl_info = {
|
||||
"name": "Shade Menu: Key: 'Z key'",
|
||||
"description": "View Modes",
|
||||
"author": "Antony Riakiotakis, Sebastian Koenig",
|
||||
"version": (0, 1, 1),
|
||||
"blender": (2, 77, 0),
|
||||
"location": "Z key",
|
||||
"warning": "",
|
||||
"wiki_url": "",
|
||||
"category": "3d View"
|
||||
}
|
||||
|
||||
import bpy
|
||||
from bpy.types import Menu
|
||||
|
||||
|
||||
# Pie Shade Mode - Z
|
||||
class VIEW3D_MT_shade_of(Menu):
|
||||
bl_label = "Shade"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
pie = layout.menu_pie()
|
||||
pie.prop(context.space_data.shading, "type", expand=True)
|
||||
|
||||
if context.active_object:
|
||||
if(context.mode == 'EDIT_MESH'):
|
||||
pie.operator("MESH_OT_faces_shade_smooth")
|
||||
pie.operator("MESH_OT_faces_shade_flat")
|
||||
else:
|
||||
pie.operator("OBJECT_OT_shade_smooth")
|
||||
pie.operator("OBJECT_OT_shade_flat")
|
||||
|
||||
|
||||
classes = (
|
||||
VIEW3D_MT_shade_of,
|
||||
)
|
||||
|
||||
addon_keymaps = []
|
||||
|
||||
|
||||
def register():
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
wm = bpy.context.window_manager
|
||||
|
||||
if wm.keyconfigs.addon:
|
||||
# Align
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Non-modal')
|
||||
kmi = km.keymap_items.new('wm.call_menu_pie', 'Z', 'PRESS')
|
||||
kmi.properties.name = VIEW3D_MT_shade_of.__name__
|
||||
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()
|
|
@ -1,65 +0,0 @@
|
|||
|
||||
bl_info = {
|
||||
"name": "Snap Menu: Key: 'Ctrl Shift Tab'",
|
||||
"description": "Snap Modes",
|
||||
"author": "Antony Riakiotakis, Sebastian Koenig",
|
||||
"version": (0, 1, 1),
|
||||
"blender": (2, 77, 0),
|
||||
"location": "Ctrl Shift Tab",
|
||||
"warning": "",
|
||||
"wiki_url": "",
|
||||
"category": "3d View"
|
||||
}
|
||||
|
||||
import bpy
|
||||
from bpy.types import Menu
|
||||
|
||||
|
||||
# Pie Snap Mode - . key
|
||||
class VIEW3D_MT_snap_of(Menu):
|
||||
bl_label = "Snapping"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
toolsettings = context.tool_settings
|
||||
pie = layout.menu_pie()
|
||||
pie.prop(toolsettings, "snap_elements", expand=True)
|
||||
pie.prop(toolsettings, "use_snap")
|
||||
|
||||
|
||||
classes = (
|
||||
VIEW3D_MT_snap_of,
|
||||
)
|
||||
|
||||
addon_keymaps = []
|
||||
|
||||
|
||||
def register():
|
||||
addon_keymaps.clear()
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
wm = bpy.context.window_manager
|
||||
|
||||
if wm.keyconfigs.addon:
|
||||
# Align
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Non-modal')
|
||||
kmi = km.keymap_items.new('wm.call_menu_pie', 'TAB', 'PRESS', ctrl=True, shift=True)
|
||||
kmi.properties.name = "view3d.snap_of"
|
||||
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()
|
|
@ -1,80 +0,0 @@
|
|||
bl_info = {
|
||||
"name": "View Menu: Key: 'Q key'",
|
||||
"description": "View Modes",
|
||||
"author": "Antony Riakiotakis, Sebastian Koenig",
|
||||
"version": (0, 1, 1),
|
||||
"blender": (2, 77, 0),
|
||||
"location": "Q key",
|
||||
"warning": "",
|
||||
"wiki_url": "",
|
||||
"category": "3d View"
|
||||
}
|
||||
|
||||
import bpy
|
||||
from bpy.types import Menu
|
||||
|
||||
|
||||
# Pie View Mode - Q
|
||||
class VIEW3D_MT_view_more_of(Menu):
|
||||
bl_label = "More"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
pie = layout.menu_pie()
|
||||
pie.operator("VIEW3D_OT_view_persportho", text="Persp/Ortho", icon='RESTRICT_VIEW_OFF')
|
||||
pie.operator("VIEW3D_OT_camera_to_view")
|
||||
pie.operator("VIEW3D_OT_view_selected")
|
||||
pie.operator("VIEW3D_OT_view_all")
|
||||
pie.operator("VIEW3D_OT_localview")
|
||||
pie.operator("SCREEN_OT_region_quadview")
|
||||
|
||||
|
||||
class VIEW3D_MT_view_of(Menu):
|
||||
bl_label = "View"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
pie = layout.menu_pie()
|
||||
pie.operator_enum("VIEW3D_OT_view_axis", "type")
|
||||
props = pie.operator("wm.call_menu_pie", text="More", icon='PLUS')
|
||||
props.name = VIEW3D_MT_view_more_of.__name__
|
||||
|
||||
|
||||
classes = (
|
||||
VIEW3D_MT_view_more_of,
|
||||
VIEW3D_MT_view_of,
|
||||
)
|
||||
|
||||
addon_keymaps = []
|
||||
|
||||
|
||||
def register():
|
||||
addon_keymaps.clear()
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
wm = bpy.context.window_manager
|
||||
|
||||
if wm.keyconfigs.addon:
|
||||
# Align
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Non-modal')
|
||||
kmi = km.keymap_items.new('wm.call_menu_pie', 'Q', 'PRESS')
|
||||
kmi.properties.name = VIEW3D_MT_view_of.__name__
|
||||
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()
|
Loading…
Reference in New Issue