Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/startup/bl_ui/space_view3d.py')
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py747
1 files changed, 563 insertions, 184 deletions
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index b6479df3047..a618ef7fd4e 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -19,11 +19,11 @@
# <pep8 compliant>
import bpy
from bpy.types import Header, Menu, Panel
-from bl_ui.properties_grease_pencil_common import (
- GreasePencilDataPanel,
- GreasePencilPaletteColorPanel,
- )
-from bl_ui.properties_paint_common import UnifiedPaintPanel
+from .properties_grease_pencil_common import (
+ GreasePencilDataPanel,
+ GreasePencilPaletteColorPanel,
+)
+from .properties_paint_common import UnifiedPaintPanel
from bpy.app.translations import contexts as i18n_contexts
@@ -55,7 +55,7 @@ class VIEW3D_HT_header(Header):
# Occlude geometry
if ((view.viewport_shade not in {'BOUNDBOX', 'WIREFRAME'} and (mode == 'PARTICLE_EDIT' or (mode == 'EDIT' and obj.type == 'MESH'))) or
- (mode == 'WEIGHT_PAINT')):
+ (mode in {'WEIGHT_PAINT', 'VERTEX_PAINT'})):
row.prop(view, "use_occlude_geometry", text="")
# Proportional editing
@@ -170,7 +170,7 @@ class VIEW3D_MT_editor_menus(Menu):
mesh = obj.data
if mesh.use_paint_mask:
layout.menu("VIEW3D_MT_select_paint_mask")
- elif mesh.use_paint_mask_vertex and mode_string == 'PAINT_WEIGHT':
+ elif mesh.use_paint_mask_vertex and mode_string in {'PAINT_WEIGHT', 'PAINT_VERTEX'}:
layout.menu("VIEW3D_MT_select_paint_mask_vertex")
elif mode_string != 'SCULPT':
layout.menu("VIEW3D_MT_select_%s" % mode_string.lower())
@@ -284,7 +284,8 @@ class VIEW3D_MT_transform_object(VIEW3D_MT_transform_base):
layout.separator()
layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("transform.transform", text="Align to Transform Orientation").mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working
+ # XXX see alignmenu() in edit.c of b2.4x to get this working
+ layout.operator("transform.transform", text="Align to Transform Orientation").mode = 'ALIGN'
layout.separator()
@@ -293,7 +294,8 @@ class VIEW3D_MT_transform_object(VIEW3D_MT_transform_base):
layout.operator("object.origin_set", text="Geometry to Origin").type = 'GEOMETRY_ORIGIN'
layout.operator("object.origin_set", text="Origin to Geometry").type = 'ORIGIN_GEOMETRY'
layout.operator("object.origin_set", text="Origin to 3D Cursor").type = 'ORIGIN_CURSOR'
- layout.operator("object.origin_set", text="Origin to Center of Mass").type = 'ORIGIN_CENTER_OF_MASS'
+ layout.operator("object.origin_set", text="Origin to Center of Mass (Surface)").type = 'ORIGIN_CENTER_OF_MASS'
+ layout.operator("object.origin_set", text="Origin to Center of Mass (Volume)").type = 'ORIGIN_CENTER_OF_VOLUME'
layout.separator()
layout.operator("object.randomize_transform")
@@ -309,17 +311,21 @@ class VIEW3D_MT_transform_armature(VIEW3D_MT_transform_base):
VIEW3D_MT_transform_base.draw(self, context)
# armature specific extensions follow...
- layout.separator()
-
obj = context.object
if obj.type == 'ARMATURE' and obj.mode in {'EDIT', 'POSE'}:
if obj.data.draw_type == 'BBONE':
+ layout.separator()
+
layout.operator("transform.transform", text="Scale BBone").mode = 'BONE_SIZE'
elif obj.data.draw_type == 'ENVELOPE':
+ layout.separator()
+
layout.operator("transform.transform", text="Scale Envelope Distance").mode = 'BONE_SIZE'
layout.operator("transform.transform", text="Scale Radius").mode = 'BONE_ENVELOPE'
if context.edit_object and context.edit_object.type == 'ARMATURE':
+ layout.separator()
+
layout.operator("armature.align")
@@ -433,39 +439,34 @@ class VIEW3D_MT_view(Menu):
def draw(self, context):
layout = self.layout
+ view = context.space_data
layout.operator("view3d.properties", icon='MENU_PANEL')
layout.operator("view3d.toolshelf", icon='MENU_PANEL')
layout.separator()
- layout.operator("view3d.viewnumpad", text="Camera").type = 'CAMERA'
- layout.operator("view3d.viewnumpad", text="Top").type = 'TOP'
- layout.operator("view3d.viewnumpad", text="Bottom").type = 'BOTTOM'
- layout.operator("view3d.viewnumpad", text="Front").type = 'FRONT'
- layout.operator("view3d.viewnumpad", text="Back").type = 'BACK'
- layout.operator("view3d.viewnumpad", text="Right").type = 'RIGHT'
- layout.operator("view3d.viewnumpad", text="Left").type = 'LEFT'
+ layout.operator("view3d.view_selected").use_all_regions = False
+ if view.region_quadviews:
+ layout.operator("view3d.view_selected", text="View Selected (Quad View)").use_all_regions = True
- layout.menu("VIEW3D_MT_view_cameras", text="Cameras")
+ layout.operator("view3d.view_all").center = False
+ layout.operator("view3d.localview", text="View Global/Local")
+ layout.operator("view3d.view_persportho")
layout.separator()
- layout.operator("view3d.view_persportho")
+ layout.menu("VIEW3D_MT_view_cameras", text="Cameras")
layout.separator()
-
+ layout.menu("VIEW3D_MT_view_viewpoint")
layout.menu("VIEW3D_MT_view_navigation")
layout.menu("VIEW3D_MT_view_align")
layout.separator()
layout.operator_context = 'INVOKE_REGION_WIN'
-
- layout.operator("view3d.clip_border", text="Clipping Border...")
- layout.operator("view3d.zoom_border", text="Zoom Border...")
- layout.operator("view3d.render_border", text="Render Border...").camera_only = False
- layout.operator("view3d.clear_render_border")
+ layout.menu("VIEW3D_MT_view_borders", text="View Borders")
layout.separator()
@@ -473,12 +474,6 @@ class VIEW3D_MT_view(Menu):
layout.separator()
- layout.operator("view3d.localview", text="View Global/Local")
- layout.operator("view3d.view_selected").use_all_regions = False
- layout.operator("view3d.view_all").center = False
-
- layout.separator()
-
layout.operator("screen.animation_play", text="Playback Animation")
layout.separator()
@@ -489,6 +484,40 @@ class VIEW3D_MT_view(Menu):
layout.operator("screen.screen_full_area", text="Toggle Fullscreen Area").use_hide_panels = True
+class VIEW3D_MT_view_cameras(Menu):
+ bl_label = "Cameras"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator("view3d.object_as_camera")
+ layout.operator("view3d.viewnumpad", text="Active Camera").type = 'CAMERA'
+
+
+class VIEW3D_MT_view_viewpoint(Menu):
+ bl_label = "Viewpoint"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator("view3d.viewnumpad", text="Camera").type = 'CAMERA'
+
+ layout.separator()
+
+ layout.operator("view3d.viewnumpad", text="Top").type = 'TOP'
+ layout.operator("view3d.viewnumpad", text="Bottom").type = 'BOTTOM'
+
+ layout.separator()
+
+ layout.operator("view3d.viewnumpad", text="Front").type = 'FRONT'
+ layout.operator("view3d.viewnumpad", text="Back").type = 'BACK'
+
+ layout.separator()
+
+ layout.operator("view3d.viewnumpad", text="Right").type = 'RIGHT'
+ layout.operator("view3d.viewnumpad", text="Left").type = 'LEFT'
+
+
class VIEW3D_MT_view_navigation(Menu):
bl_label = "Navigation"
@@ -514,6 +543,7 @@ class VIEW3D_MT_view_navigation(Menu):
layout.operator("view3d.zoom", text="Zoom In").delta = 1
layout.operator("view3d.zoom", text="Zoom Out").delta = -1
+ layout.operator("view3d.zoom_border", text="Zoom Border...")
layout.operator("view3d.zoom_camera_1_to_1", text="Zoom Camera 1:1")
layout.separator()
@@ -535,7 +565,6 @@ class VIEW3D_MT_view_align(Menu):
layout.operator("view3d.view_all", text="Center Cursor and View All").center = True
layout.operator("view3d.camera_to_view", text="Align Active Camera to View")
layout.operator("view3d.camera_to_view_selected", text="Align Active Camera to Selected")
- layout.operator("view3d.view_selected")
layout.operator("view3d.view_center_cursor")
layout.separator()
@@ -575,14 +604,17 @@ class VIEW3D_MT_view_align_selected(Menu):
props.type = 'LEFT'
-class VIEW3D_MT_view_cameras(Menu):
- bl_label = "Cameras"
+class VIEW3D_MT_view_borders(Menu):
+ bl_label = "View Borders"
def draw(self, context):
layout = self.layout
+ layout.operator("view3d.clip_border", text="Clipping Border...")
+ layout.operator("view3d.render_border", text="Render Border...").camera_only = False
- layout.operator("view3d.object_as_camera")
- layout.operator("view3d.viewnumpad", text="Active Camera").type = 'CAMERA'
+ layout.separator()
+
+ layout.operator("view3d.clear_render_border")
# ********** Select menus, suffix from context.mode **********
@@ -632,6 +664,9 @@ class VIEW3D_MT_select_object(Menu):
layout.operator("object.select_all").action = 'TOGGLE'
layout.operator("object.select_all", text="Inverse").action = 'INVERT'
+
+ layout.separator()
+
layout.operator("object.select_random", text="Random")
layout.operator("object.select_mirror", text="Mirror")
layout.operator("object.select_by_layer", text="Select All by Layer")
@@ -690,6 +725,9 @@ class VIEW3D_MT_select_pose(Menu):
layout.operator("pose.select_all").action = 'TOGGLE'
layout.operator("pose.select_all", text="Inverse").action = 'INVERT'
layout.operator("pose.select_mirror", text="Flip Active")
+
+ layout.separator()
+
layout.operator("pose.select_constraint_target", text="Constraint Target")
layout.operator("pose.select_linked", text="Linked")
@@ -755,7 +793,7 @@ class VIEW3D_MT_edit_mesh_select_by_trait(Menu):
layout.operator("mesh.select_non_manifold", text="Non Manifold")
layout.operator("mesh.select_loose", text="Loose Geometry")
layout.operator("mesh.select_interior_faces", text="Interior Faces")
- layout.operator("mesh.select_face_by_sides")
+ layout.operator("mesh.select_face_by_sides", text="Faces by Sides")
layout.separator()
@@ -777,6 +815,32 @@ class VIEW3D_MT_edit_mesh_select_more_less(Menu):
layout.operator("mesh.select_prev_item", text="Previous Active")
+class VIEW3D_MT_edit_mesh_select_linked(Menu):
+ bl_label = "Select Linked"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator("mesh.select_linked", text="Linked")
+ layout.operator("mesh.shortest_path_select", text="Shortest Path")
+ layout.operator("mesh.faces_select_linked_flat", text="Linked Flat Faces")
+
+
+class VIEW3D_MT_edit_mesh_select_loops(Menu):
+ bl_label = "Select Loops"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator("mesh.loop_multi_select", text="Edge Loops").ring = False
+ layout.operator("mesh.loop_multi_select", text="Edge Rings").ring = True
+
+ layout.separator()
+
+ layout.operator("mesh.loop_to_region")
+ layout.operator("mesh.region_to_loop")
+
+
class VIEW3D_MT_select_edit_mesh(Menu):
bl_label = "Select"
@@ -802,7 +866,6 @@ class VIEW3D_MT_select_edit_mesh(Menu):
# geometric
layout.operator("mesh.edges_select_sharp", text="Sharp Edges")
- layout.operator("mesh.faces_select_linked_flat", text="Linked Flat Faces")
layout.separator()
@@ -819,18 +882,16 @@ class VIEW3D_MT_select_edit_mesh(Menu):
layout.separator()
- layout.operator("mesh.select_mirror", text="Mirror")
- layout.operator("mesh.select_axis", text="Side of Active")
+ layout.menu("VIEW3D_MT_edit_mesh_select_loops")
- layout.operator("mesh.select_linked", text="Linked")
- layout.operator("mesh.shortest_path_select", text="Shortest Path")
- layout.operator("mesh.loop_multi_select", text="Edge Loops").ring = False
- layout.operator("mesh.loop_multi_select", text="Edge Rings").ring = True
+ layout.separator()
+
+ layout.menu("VIEW3D_MT_edit_mesh_select_linked")
layout.separator()
- layout.operator("mesh.loop_to_region")
- layout.operator("mesh.region_to_loop")
+ layout.operator("mesh.select_axis", text="Side of Active")
+ layout.operator("mesh.select_mirror", text="Mirror")
class VIEW3D_MT_select_edit_curve(Menu):
@@ -846,6 +907,9 @@ class VIEW3D_MT_select_edit_curve(Menu):
layout.operator("curve.select_all").action = 'TOGGLE'
layout.operator("curve.select_all", text="Inverse").action = 'INVERT'
+
+ layout.separator()
+
layout.operator("curve.select_random")
layout.operator("curve.select_nth")
layout.operator("curve.select_linked", text="Select Linked")
@@ -877,6 +941,9 @@ class VIEW3D_MT_select_edit_surface(Menu):
layout.operator("curve.select_all").action = 'TOGGLE'
layout.operator("curve.select_all", text="Inverse").action = 'INVERT'
+
+ layout.separator()
+
layout.operator("curve.select_random")
layout.operator("curve.select_nth")
layout.operator("curve.select_linked", text="Select Linked")
@@ -900,9 +967,13 @@ class VIEW3D_MT_select_edit_text(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("font.text_copy", text="Copy")
- layout.operator("font.text_cut", text="Cut")
+ layout.menu("VIEW3D_MT_undo_redo")
+
+ layout.separator()
+
layout.operator("font.text_paste", text="Paste")
+ layout.operator("font.text_cut", text="Cut")
+ layout.operator("font.text_copy", text="Copy")
layout.separator()
@@ -947,13 +1018,16 @@ class VIEW3D_MT_select_edit_lattice(Menu):
layout.separator()
- layout.operator("lattice.select_mirror")
- layout.operator("lattice.select_random")
layout.operator("lattice.select_all").action = 'TOGGLE'
layout.operator("lattice.select_all", text="Inverse").action = 'INVERT'
layout.separator()
+ layout.operator("lattice.select_mirror")
+ layout.operator("lattice.select_random")
+
+ layout.separator()
+
layout.operator("lattice.select_ungrouped", text="Ungrouped Verts")
@@ -1014,6 +1088,9 @@ class VIEW3D_MT_select_gpencil(Menu):
layout.operator("gpencil.select_all", text="(De)select All").action = 'TOGGLE'
layout.operator("gpencil.select_all", text="Inverse").action = 'INVERT'
+
+ layout.separator()
+
layout.operator("gpencil.select_linked", text="Linked")
layout.operator_menu_enum("gpencil.select_grouped", "type", text="Grouped")
@@ -1100,11 +1177,7 @@ class VIEW3D_MT_angle_control(Menu):
layout.prop(tex_slot, "use_random", text="Random")
-# ********** Add menu **********
-
-# XXX: INFO_MT_ names used to keep backwards compatibility (Addons etc that hook into the menu)
-
-
+# XXX: INFO_MT_ names used to keep backwards compatibility (Add-ons etc. that hook into the menu)
class INFO_MT_mesh_add(Menu):
bl_idname = "INFO_MT_mesh_add"
bl_label = "Mesh"
@@ -1205,6 +1278,16 @@ class INFO_MT_lamp_add(Menu):
layout.operator_enum("object.lamp_add", "type")
+class INFO_MT_camera_add(Menu):
+ bl_idname = "INFO_MT_camera_add"
+ bl_label = "Camera"
+
+ def draw(self, context):
+ layout = self.layout
+ layout.operator_context = 'EXEC_REGION_WIN'
+ layout.operator("object.camera_add", text="Camera", icon='OUTLINER_OB_CAMERA')
+
+
class INFO_MT_add(Menu):
bl_label = "Add"
@@ -1217,12 +1300,12 @@ class INFO_MT_add(Menu):
# "align_view" to work on first call (see [#32719]).
layout.operator_context = 'EXEC_REGION_WIN'
- #layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH')
+ # layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH')
layout.menu("INFO_MT_mesh_add", icon='OUTLINER_OB_MESH')
- #layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE')
+ # layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE')
layout.menu("INFO_MT_curve_add", icon='OUTLINER_OB_CURVE')
- #layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE')
+ # layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE')
layout.menu("INFO_MT_surface_add", icon='OUTLINER_OB_SURFACE')
layout.menu("INFO_MT_metaball_add", text="Metaball", icon='OUTLINER_OB_META')
layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT')
@@ -1236,21 +1319,63 @@ class INFO_MT_add(Menu):
layout.operator("object.speaker_add", text="Speaker", icon='OUTLINER_OB_SPEAKER')
layout.separator()
- layout.operator("object.camera_add", text="Camera", icon='OUTLINER_OB_CAMERA')
+ if INFO_MT_camera_add.is_extended():
+ layout.menu("INFO_MT_camera_add", icon='OUTLINER_OB_CAMERA')
+ else:
+ INFO_MT_camera_add.draw(self, context)
+
layout.menu("INFO_MT_lamp_add", icon='OUTLINER_OB_LAMP')
layout.separator()
- layout.operator_menu_enum("object.effector_add", "type", text="Force Field", icon='OUTLINER_OB_EMPTY')
+ layout.operator_menu_enum("object.effector_add", "type", text="Force Field", icon='OUTLINER_OB_FORCE_FIELD')
layout.separator()
if len(bpy.data.groups) > 10:
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("object.group_instance_add", text="Group Instance...", icon='OUTLINER_OB_EMPTY')
+ layout.operator("object.group_instance_add", text="Group Instance...", icon='OUTLINER_OB_GROUP_INSTANCE')
else:
- layout.operator_menu_enum("object.group_instance_add", "group", text="Group Instance", icon='OUTLINER_OB_EMPTY')
+ layout.operator_menu_enum(
+ "object.group_instance_add",
+ "group",
+ text="Group Instance",
+ icon='OUTLINER_OB_GROUP_INSTANCE',
+ )
-# ********** Object menu **********
+class VIEW3D_MT_undo_redo(Menu):
+ bl_label = "Undo/Redo"
+ _operator_name = ""
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator("ed.undo")
+ layout.operator("ed.redo")
+
+ layout.separator()
+
+ layout.operator("ed.undo_history")
+
+
+class VIEW3D_MT_object_relations(Menu):
+ bl_label = "Relations"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator("object.proxy_make", text="Make Proxy...")
+
+ layout.operator("object.make_dupli_face")
+
+ layout.separator()
+
+ layout.operator_menu_enum("object.make_local", "type", text="Make Local...")
+ layout.menu("VIEW3D_MT_make_single_user")
+
+ layout.separator()
+
+ layout.operator("object.data_transfer")
+ layout.operator("object.datalayout_transfer")
class VIEW3D_MT_object(Menu):
@@ -1262,9 +1387,11 @@ class VIEW3D_MT_object(Menu):
view = context.space_data
is_local_view = (view.local_view is not None)
- layout.operator("ed.undo")
- layout.operator("ed.redo")
- layout.operator("ed.undo_history")
+ layout.menu("VIEW3D_MT_undo_redo")
+
+ layout.separator()
+
+ layout.operator("object.delete", text="Delete...").use_global = False
layout.separator()
@@ -1272,53 +1399,45 @@ class VIEW3D_MT_object(Menu):
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_object_clear")
layout.menu("VIEW3D_MT_object_apply")
- layout.menu("VIEW3D_MT_snap")
layout.separator()
- layout.menu("VIEW3D_MT_object_animation")
+ layout.menu("VIEW3D_MT_object_parent")
+ layout.menu("VIEW3D_MT_object_group")
+ layout.menu("VIEW3D_MT_snap")
layout.separator()
layout.operator("object.duplicate_move")
layout.operator("object.duplicate_move_linked")
- layout.operator("object.delete", text="Delete...").use_global = False
- layout.operator("object.proxy_make", text="Make Proxy...")
- layout.menu("VIEW3D_MT_make_links", text="Make Links...")
- layout.operator("object.make_dupli_face")
- layout.operator_menu_enum("object.make_local", "type", text="Make Local...")
- layout.menu("VIEW3D_MT_make_single_user")
+ layout.operator("object.join")
+ if is_local_view:
+ layout.operator_context = 'EXEC_REGION_WIN'
+ layout.operator("object.move_to_layer", text="Move out of Local View")
+ layout.operator_context = 'INVOKE_REGION_WIN'
+ else:
+ layout.operator("object.move_to_layer", text="Move to Layer...")
layout.separator()
-
- layout.menu("VIEW3D_MT_object_parent")
- layout.menu("VIEW3D_MT_object_track")
- layout.menu("VIEW3D_MT_object_group")
+ layout.menu("VIEW3D_MT_make_links", text="Make Links...")
+ layout.menu("VIEW3D_MT_object_relations")
layout.menu("VIEW3D_MT_object_constraints")
+ layout.menu("VIEW3D_MT_object_track")
layout.separator()
- layout.menu("VIEW3D_MT_object_quick_effects")
+ layout.menu("VIEW3D_MT_object_animation")
layout.separator()
- layout.menu("VIEW3D_MT_object_game")
+ layout.menu("VIEW3D_MT_object_quick_effects")
layout.separator()
- layout.operator("object.join")
- layout.operator("object.data_transfer")
- layout.operator("object.datalayout_transfer")
+ layout.menu("VIEW3D_MT_object_game")
layout.separator()
- if is_local_view:
- layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("object.move_to_layer", text="Move out of Local View")
- layout.operator_context = 'INVOKE_REGION_WIN'
- else:
- layout.operator("object.move_to_layer", text="Move to Layer...")
-
layout.menu("VIEW3D_MT_object_showhide")
layout.operator_menu_enum("object.convert", "target")
@@ -1349,6 +1468,9 @@ class VIEW3D_MT_object_clear(Menu):
layout.operator("object.location_clear", text="Location").clear_delta = False
layout.operator("object.rotation_clear", text="Rotation").clear_delta = False
layout.operator("object.scale_clear", text="Scale").clear_delta = False
+
+ layout.separator()
+
layout.operator("object.origin_clear", text="Origin")
@@ -1428,18 +1550,21 @@ class VIEW3D_MT_object_specials(Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
if scene.render.use_shading_nodes:
- try:
- value = lamp.node_tree.nodes["Emission"].inputs["Strength"].default_value
- except AttributeError:
- value = None
-
- if value is not None:
+ emission_node = None
+ if lamp.node_tree:
+ for node in lamp.node_tree.nodes:
+ if getattr(node, "type", None) == 'EMISSION':
+ emission_node = node
+ break
+
+ if emission_node is not None:
props = layout.operator("wm.context_modal_mouse", text="Strength")
props.data_path_iter = "selected_editable_objects"
- props.data_path_item = "data.node_tree.nodes[\"Emission\"].inputs[\"Strength\"].default_value"
+ props.data_path_item = "data.node_tree" \
+ ".nodes[\"" + emission_node.name + "\"]" \
+ ".inputs[\"Strength\"].default_value"
props.header_text = "Lamp Strength: %.3f"
props.input_scale = 0.1
- del value
if lamp.type == 'AREA':
props = layout.operator("wm.context_modal_mouse", text="Size X")
@@ -1523,16 +1648,41 @@ class VIEW3D_MT_object_apply(Menu):
layout.separator()
- layout.operator("object.transforms_to_deltas", text="Location to Deltas", text_ctxt=i18n_contexts.default).mode = 'LOC'
- layout.operator("object.transforms_to_deltas", text="Rotation to Deltas", text_ctxt=i18n_contexts.default).mode = 'ROT'
- layout.operator("object.transforms_to_deltas", text="Scale to Deltas", text_ctxt=i18n_contexts.default).mode = 'SCALE'
-
- layout.operator("object.transforms_to_deltas", text="All Transforms to Deltas", text_ctxt=i18n_contexts.default).mode = 'ALL'
+ layout.operator(
+ "object.transforms_to_deltas",
+ text="Location to Deltas",
+ text_ctxt=i18n_contexts.default,
+ ).mode = 'LOC'
+ layout.operator(
+ "object.transforms_to_deltas",
+ text="Rotation to Deltas",
+ text_ctxt=i18n_contexts.default,
+ ).mode = 'ROT'
+ layout.operator(
+ "object.transforms_to_deltas",
+ text="Scale to Deltas",
+ text_ctxt=i18n_contexts.default,
+ ).mode = 'SCALE'
+
+ layout.operator(
+ "object.transforms_to_deltas",
+ text="All Transforms to Deltas",
+ text_ctxt=i18n_contexts.default,
+ ).mode = 'ALL'
layout.operator("object.anim_transforms_to_deltas")
layout.separator()
- layout.operator("object.visual_transform_apply", text="Visual Transform", text_ctxt=i18n_contexts.default)
+ layout.operator(
+ "object.visual_transform_apply",
+ text="Visual Transform",
+ text_ctxt=i18n_contexts.default,
+ )
+ layout.operator(
+ "object.convert",
+ text="Visual Geometry to Mesh",
+ text_ctxt=i18n_contexts.default,
+ ).target = 'MESH'
layout.operator("object.duplicates_make_real")
@@ -1543,7 +1693,9 @@ class VIEW3D_MT_object_parent(Menu):
layout = self.layout
layout.operator_enum("object.parent_set", "type")
+
layout.separator()
+
layout.operator_enum("object.parent_clear", "type")
@@ -1554,7 +1706,9 @@ class VIEW3D_MT_object_track(Menu):
layout = self.layout
layout.operator_enum("object.track_set", "type")
+
layout.separator()
+
layout.operator_enum("object.track_clear", "type")
@@ -1583,6 +1737,9 @@ class VIEW3D_MT_object_constraints(Menu):
layout.operator("object.constraint_add_with_targets")
layout.operator("object.constraints_copy")
+
+ layout.separator()
+
layout.operator("object.constraints_clear")
@@ -1605,6 +1762,9 @@ class VIEW3D_MT_object_showhide(Menu):
layout = self.layout
layout.operator("object.hide_view_clear", text="Show Hidden")
+
+ layout.separator()
+
layout.operator("object.hide_view_set", text="Hide Selected").unselected = False
layout.operator("object.hide_view_set", text="Hide Unselected").unselected = True
@@ -1642,12 +1802,16 @@ class VIEW3D_MT_make_links(Menu):
def draw(self, context):
layout = self.layout
operator_context_default = layout.operator_context
+
if len(bpy.data.scenes) > 10:
layout.operator_context = 'INVOKE_REGION_WIN'
layout.operator("object.make_links_scene", text="Objects to Scene...", icon='OUTLINER_OB_EMPTY')
else:
layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator_menu_enum("object.make_links_scene", "scene", text="Objects to Scene...")
+ layout.operator_menu_enum("object.make_links_scene", "scene", text="Objects to Scene")
+
+ layout.separator()
+
layout.operator_context = operator_context_default
layout.operator_enum("object.make_links_data", "type") # inline
@@ -1675,7 +1839,6 @@ class VIEW3D_MT_object_game(Menu):
layout.operator("object.game_property_clear")
-# ********** Brush menu **********
class VIEW3D_MT_brush(Menu):
bl_label = "Brush"
@@ -1683,7 +1846,7 @@ class VIEW3D_MT_brush(Menu):
layout = self.layout
settings = UnifiedPaintPanel.paint_settings(context)
- brush = settings.brush
+ brush = getattr(settings, "brush", None)
ups = context.tool_settings.unified_paint_settings
layout.prop(ups, "use_unified_size", text="Unified Size")
@@ -1692,6 +1855,11 @@ class VIEW3D_MT_brush(Menu):
layout.prop(ups, "use_unified_color", text="Unified Color")
layout.separator()
+ # skip if no active brush
+ if not brush:
+ layout.label(text="No Brushes currently available", icon='INFO')
+ return
+
# brush paint modes
layout.menu("VIEW3D_MT_brush_paint_modes")
@@ -1704,10 +1872,6 @@ class VIEW3D_MT_brush(Menu):
elif context.vertex_paint_object or context.weight_paint_object:
layout.prop_menu_enum(brush, "vertex_tool")
- # skip if no active brush
- if not brush:
- return
-
# TODO: still missing a lot of brush options here
# sculpt options
@@ -1745,23 +1909,20 @@ class VIEW3D_MT_brush_paint_modes(Menu):
layout.prop(brush, "use_paint_image", text="Texture Paint")
-# ********** Vertex paint menu **********
-
-
class VIEW3D_MT_paint_vertex(Menu):
bl_label = "Paint"
def draw(self, context):
layout = self.layout
- layout.operator("ed.undo")
- layout.operator("ed.redo")
+ layout.menu("VIEW3D_MT_undo_redo")
layout.separator()
layout.operator("paint.vertex_color_set")
layout.operator("paint.vertex_color_smooth")
layout.operator("paint.vertex_color_dirt")
+ layout.operator("paint.vertex_color_from_weight")
layout.separator()
@@ -1783,9 +1944,12 @@ class VIEW3D_MT_hook(Menu):
if [mod.type == 'HOOK' for mod in context.active_object.modifiers]:
layout.separator()
+
layout.operator_menu_enum("object.hook_assign", "modifier")
layout.operator_menu_enum("object.hook_remove", "modifier")
+
layout.separator()
+
layout.operator_menu_enum("object.hook_select", "modifier")
layout.operator_menu_enum("object.hook_reset", "modifier")
layout.operator_menu_enum("object.hook_recenter", "modifier")
@@ -1804,29 +1968,29 @@ class VIEW3D_MT_vertex_group(Menu):
if ob.mode == 'EDIT' or (ob.mode == 'WEIGHT_PAINT' and ob.type == 'MESH' and ob.data.use_paint_mask_vertex):
if ob.vertex_groups.active:
layout.separator()
+
layout.operator("object.vertex_group_assign", text="Assign to Active Group")
- layout.operator("object.vertex_group_remove_from", text="Remove from Active Group").use_all_groups = False
+ layout.operator(
+ "object.vertex_group_remove_from",
+ text="Remove from Active Group",
+ ).use_all_groups = False
layout.operator("object.vertex_group_remove_from", text="Remove from All").use_all_groups = True
- layout.separator()
if ob.vertex_groups.active:
+ layout.separator()
+
layout.operator_menu_enum("object.vertex_group_set_active", "group", text="Set Active Group")
layout.operator("object.vertex_group_remove", text="Remove Active Group").all = False
layout.operator("object.vertex_group_remove", text="Remove All Groups").all = True
-# ********** Weight paint menu **********
-
-
class VIEW3D_MT_paint_weight(Menu):
bl_label = "Weights"
def draw(self, context):
layout = self.layout
- layout.operator("ed.undo")
- layout.operator("ed.redo")
- layout.operator("ed.undo_history")
+ layout.menu("VIEW3D_MT_undo_redo")
layout.separator()
@@ -1837,15 +2001,23 @@ class VIEW3D_MT_paint_weight(Menu):
layout.operator("object.vertex_group_normalize_all", text="Normalize All")
layout.operator("object.vertex_group_normalize", text="Normalize")
+
+ layout.separator()
+
layout.operator("object.vertex_group_mirror", text="Mirror")
layout.operator("object.vertex_group_invert", text="Invert")
layout.operator("object.vertex_group_clean", text="Clean")
+
+ layout.separator()
+
layout.operator("object.vertex_group_quantize", text="Quantize")
layout.operator("object.vertex_group_levels", text="Levels")
layout.operator("object.vertex_group_smooth", text="Smooth")
+
props = layout.operator("object.data_transfer", text="Transfer Weights")
props.use_reverse_transfer = True
props.data_type = 'VGROUP_WEIGHTS'
+
layout.operator("object.vertex_group_limit_total", text="Limit Total")
layout.operator("object.vertex_group_fix", text="Fix Deforms")
@@ -1854,9 +2026,6 @@ class VIEW3D_MT_paint_weight(Menu):
layout.operator("paint.weight_set")
-# ********** Sculpt menu **********
-
-
class VIEW3D_MT_sculpt(Menu):
bl_label = "Sculpt"
@@ -1866,25 +2035,28 @@ class VIEW3D_MT_sculpt(Menu):
toolsettings = context.tool_settings
sculpt = toolsettings.sculpt
- layout.operator("ed.undo")
- layout.operator("ed.redo")
+ layout.menu("VIEW3D_MT_undo_redo")
layout.separator()
layout.prop(sculpt, "use_symmetry_x")
layout.prop(sculpt, "use_symmetry_y")
layout.prop(sculpt, "use_symmetry_z")
+
layout.separator()
+
layout.prop(sculpt, "lock_x")
layout.prop(sculpt, "lock_y")
layout.prop(sculpt, "lock_z")
layout.separator()
+
layout.prop(sculpt, "use_threaded", text="Threaded Sculpt")
layout.prop(sculpt, "show_low_resolution")
layout.prop(sculpt, "show_brush")
layout.prop(sculpt, "use_deform_only")
layout.prop(sculpt, "show_diffuse_color")
+ layout.prop(sculpt, "show_mask")
class VIEW3D_MT_hide_mask(Menu):
@@ -1926,9 +2098,6 @@ class VIEW3D_MT_hide_mask(Menu):
props = layout.operator("paint.mask_lasso_gesture", text="Lasso Mask")
-# ********** Particle menu **********
-
-
class VIEW3D_MT_particle(Menu):
bl_label = "Particle"
@@ -1937,18 +2106,19 @@ class VIEW3D_MT_particle(Menu):
particle_edit = context.tool_settings.particle_edit
- layout.operator("ed.undo")
- layout.operator("ed.redo")
- layout.operator("ed.undo_history")
+ layout.menu("VIEW3D_MT_undo_redo")
layout.separator()
- layout.operator("particle.mirror")
+ layout.operator("particle.delete")
layout.separator()
+ layout.operator("particle.mirror")
+
layout.operator("particle.remove_doubles")
- layout.operator("particle.delete")
+
+ layout.separator()
if particle_edit.select_mode == 'POINT':
layout.operator("particle.subdivide")
@@ -1971,7 +2141,13 @@ class VIEW3D_MT_particle_specials(Menu):
particle_edit = context.tool_settings.particle_edit
layout.operator("particle.rekey")
+
+ layout.separator()
+
layout.operator("particle.delete")
+
+ layout.separator()
+
layout.operator("particle.remove_doubles")
layout.operator("particle.unify_length")
@@ -1979,6 +2155,7 @@ class VIEW3D_MT_particle_specials(Menu):
layout.operator("particle.subdivide")
layout.operator("particle.weight_set")
+
layout.separator()
layout.operator("particle.mirror")
@@ -2008,18 +2185,13 @@ class VIEW3D_MT_particle_showhide(ShowHideMenu, Menu):
_operator_name = "particle"
-# ********** Pose Menu **********
-
-
class VIEW3D_MT_pose(Menu):
bl_label = "Pose"
def draw(self, context):
layout = self.layout
- layout.operator("ed.undo")
- layout.operator("ed.redo")
- layout.operator("ed.undo_history")
+ layout.menu("VIEW3D_MT_undo_redo")
layout.separator()
@@ -2096,7 +2268,7 @@ class VIEW3D_MT_pose_transform(Menu):
layout.separator()
- layout.operator("pose.user_transforms_clear", text="Reset unkeyed")
+ layout.operator("pose.user_transforms_clear", text="Reset Unkeyed")
class VIEW3D_MT_pose_slide(Menu):
@@ -2167,6 +2339,7 @@ class VIEW3D_MT_pose_group(Menu):
layout.operator_context = 'EXEC_AREA'
layout.operator("pose.group_assign", text="Assign to New Group").type = 0
+
if pose.bone_groups:
active_group = pose.bone_groups.active_index + 1
layout.operator("pose.group_assign", text="Assign to Group").type = active_group
@@ -2226,6 +2399,9 @@ class VIEW3D_MT_pose_specials(Menu):
layout.operator("pose.select_constraint_target")
layout.operator("pose.flip_names")
+
+ layout.separator()
+
layout.operator("pose.paths_calculate")
layout.operator("pose.paths_clear")
layout.operator("pose.user_transforms_clear")
@@ -2293,9 +2469,11 @@ class VIEW3D_MT_edit_mesh(Menu):
toolsettings = context.tool_settings
- layout.operator("ed.undo")
- layout.operator("ed.redo")
- layout.operator("ed.undo_history")
+ layout.menu("VIEW3D_MT_undo_redo")
+
+ layout.separator()
+
+ layout.menu("VIEW3D_MT_edit_mesh_delete")
layout.separator()
@@ -2311,13 +2489,15 @@ class VIEW3D_MT_edit_mesh(Menu):
layout.operator("mesh.duplicate_move")
layout.menu("VIEW3D_MT_edit_mesh_extrude")
- layout.menu("VIEW3D_MT_edit_mesh_delete")
layout.separator()
layout.menu("VIEW3D_MT_edit_mesh_vertices")
layout.menu("VIEW3D_MT_edit_mesh_edges")
layout.menu("VIEW3D_MT_edit_mesh_faces")
+
+ layout.separator()
+
layout.menu("VIEW3D_MT_edit_mesh_normals")
layout.menu("VIEW3D_MT_edit_mesh_clean")
@@ -2488,8 +2668,8 @@ class VIEW3D_MT_edit_mesh_vertices(Menu):
layout.operator("object.vertex_parent_set")
-class VIEW3D_MT_edit_mesh_edges(Menu):
- bl_label = "Edges"
+class VIEW3D_MT_edit_mesh_edges_data(Menu):
+ bl_label = "Edge Data"
def draw(self, context):
layout = self.layout
@@ -2498,13 +2678,6 @@ class VIEW3D_MT_edit_mesh_edges(Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("mesh.edge_face_add")
- layout.operator("mesh.subdivide")
- layout.operator("mesh.subdivide_edgering")
- layout.operator("mesh.unsubdivide")
-
- layout.separator()
-
layout.operator("transform.edge_crease")
layout.operator("transform.edge_bevelweight")
@@ -2525,6 +2698,26 @@ class VIEW3D_MT_edit_mesh_edges(Menu):
layout.operator("mesh.mark_freestyle_edge", text="Clear Freestyle Edge").clear = True
layout.separator()
+
+class VIEW3D_MT_edit_mesh_edges(Menu):
+ bl_label = "Edges"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator_context = 'INVOKE_REGION_WIN'
+
+ layout.operator("mesh.edge_face_add")
+ layout.operator("mesh.subdivide")
+ layout.operator("mesh.subdivide_edgering")
+ layout.operator("mesh.unsubdivide")
+
+ layout.separator()
+
+ layout.menu("VIEW3D_MT_edit_mesh_edges_data")
+
+ layout.separator()
+
layout.operator("mesh.edge_rotate", text="Rotate Edge CW").use_ccw = False
layout.operator("mesh.edge_rotate", text="Rotate Edge CCW").use_ccw = True
@@ -2613,7 +2806,7 @@ class VIEW3D_MT_edit_mesh_normals(Menu):
class VIEW3D_MT_edit_mesh_clean(Menu):
- bl_label = "Clean up"
+ bl_label = "Clean Up"
def draw(self, context):
layout = self.layout
@@ -2626,6 +2819,9 @@ class VIEW3D_MT_edit_mesh_clean(Menu):
layout.operator("mesh.dissolve_degenerate")
layout.operator("mesh.dissolve_limited")
layout.operator("mesh.face_make_planar")
+
+ layout.separator()
+
layout.operator("mesh.vert_connect_nonplanar")
layout.operator("mesh.vert_connect_concave")
layout.operator("mesh.remove_doubles")
@@ -2684,7 +2880,13 @@ class VIEW3D_MT_edit_gpencil_delete(Menu):
def draw_curve(self, context):
layout = self.layout
- toolsettings = context.tool_settings
+ layout.menu("VIEW3D_MT_undo_redo")
+
+ layout.separator()
+
+ layout.menu("VIEW3D_MT_edit_curve_delete")
+
+ layout.separator()
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_mirror")
@@ -2695,11 +2897,13 @@ def draw_curve(self, context):
layout.operator("curve.extrude_move")
layout.operator("curve.spin")
layout.operator("curve.duplicate_move")
+
+ layout.separator()
+
layout.operator("curve.split")
layout.operator("curve.separate")
layout.operator("curve.make_segment")
layout.operator("curve.cyclic_toggle")
- layout.menu("VIEW3D_MT_edit_curve_delete")
layout.separator()
@@ -2708,6 +2912,10 @@ def draw_curve(self, context):
layout.separator()
+ layout.menu("VIEW3D_MT_edit_curve_clean")
+
+ layout.separator()
+
layout.menu("VIEW3D_MT_edit_proportional")
layout.separator()
@@ -2756,6 +2964,14 @@ class VIEW3D_MT_edit_curve_segments(Menu):
layout.operator("curve.subdivide")
layout.operator("curve.switch_direction")
+class VIEW3D_MT_edit_curve_clean(Menu):
+ bl_label = "Clean Up"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator("curve.decimate")
+
class VIEW3D_MT_edit_curve_specials(Menu):
bl_label = "Specials"
@@ -2767,6 +2983,9 @@ class VIEW3D_MT_edit_curve_specials(Menu):
layout.operator("curve.switch_direction")
layout.operator("curve.spline_weight_set")
layout.operator("curve.radius_set")
+
+ layout.separator()
+
layout.operator("curve.smooth")
layout.operator("curve.smooth_weight")
layout.operator("curve.smooth_radius")
@@ -2802,12 +3021,18 @@ class VIEW3D_MT_edit_font(Menu):
def draw(self, context):
layout = self.layout
+ # Break convention of having undo menu here,
+ # instead place in "Edit" menu, matching the text menu.
+
layout.menu("VIEW3D_MT_edit_text_chars")
layout.separator()
layout.operator("font.style_toggle", text="Toggle Bold").style = 'BOLD'
layout.operator("font.style_toggle", text="Toggle Italic").style = 'ITALIC'
+
+ layout.separator()
+
layout.operator("font.style_toggle", text="Toggle Underline").style = 'UNDERLINE'
layout.operator("font.style_toggle", text="Toggle Small Caps").style = 'SMALL_CAPS'
@@ -2826,9 +3051,15 @@ class VIEW3D_MT_edit_text_chars(Menu):
layout.operator("font.text_insert", text="Degree Sign").text = "\u00B0"
layout.operator("font.text_insert", text="Multiplication Sign").text = "\u00D7"
layout.operator("font.text_insert", text="Circle").text = "\u008A"
+
+ layout.separator()
+
layout.operator("font.text_insert", text="Superscript 1").text = "\u00B9"
layout.operator("font.text_insert", text="Superscript 2").text = "\u00B2"
layout.operator("font.text_insert", text="Superscript 3").text = "\u00B3"
+
+ layout.separator()
+
layout.operator("font.text_insert", text="Double >>").text = "\u00BB"
layout.operator("font.text_insert", text="Double <<").text = "\u00AB"
layout.operator("font.text_insert", text="Promillage").text = "\u2030"
@@ -2852,11 +3083,11 @@ class VIEW3D_MT_edit_meta(Menu):
def draw(self, context):
layout = self.layout
- toolsettings = context.tool_settings
+ layout.menu("VIEW3D_MT_undo_redo")
- layout.operator("ed.undo")
- layout.operator("ed.redo")
- layout.operator("ed.undo_history")
+ layout.separator()
+
+ layout.operator("mball.delete_metaelems", text="Delete...")
layout.separator()
@@ -2866,7 +3097,6 @@ class VIEW3D_MT_edit_meta(Menu):
layout.separator()
- layout.operator("mball.delete_metaelems", text="Delete...")
layout.operator("mball.duplicate_metaelems")
layout.separator()
@@ -2895,7 +3125,9 @@ class VIEW3D_MT_edit_lattice(Menu):
def draw(self, context):
layout = self.layout
- toolsettings = context.tool_settings
+ layout.menu("VIEW3D_MT_undo_redo")
+
+ layout.separator()
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_mirror")
@@ -2924,6 +3156,14 @@ class VIEW3D_MT_edit_armature(Menu):
edit_object = context.edit_object
arm = edit_object.data
+ layout.menu("VIEW3D_MT_undo_redo")
+
+ layout.separator()
+
+ layout.operator("armature.delete")
+
+ layout.separator()
+
layout.menu("VIEW3D_MT_transform_armature")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_snap")
@@ -2939,7 +3179,6 @@ class VIEW3D_MT_edit_armature(Menu):
layout.operator("armature.duplicate_move")
layout.operator("armature.merge")
layout.operator("armature.fill")
- layout.operator("armature.delete")
layout.operator("armature.split")
layout.operator("armature.separate")
@@ -3041,14 +3280,11 @@ class VIEW3D_MT_edit_gpencil(Menu):
layout = self.layout
- layout.operator("ed.undo")
- layout.operator("ed.redo")
- layout.operator("ed.undo_history")
+ layout.menu("VIEW3D_MT_undo_redo")
layout.separator()
- layout.operator("gpencil.brush_paint", text="Sculpt Strokes").wait_for_input = True
- layout.prop_menu_enum(toolsettings.gpencil_sculpt, "tool", text="Sculpt Brush")
+ layout.menu("VIEW3D_MT_edit_gpencil_delete")
layout.separator()
@@ -3058,12 +3294,16 @@ class VIEW3D_MT_edit_gpencil(Menu):
layout.separator()
+ layout.operator("gpencil.brush_paint", text="Sculpt Strokes").wait_for_input = True
+ layout.prop_menu_enum(toolsettings.gpencil_sculpt, "tool", text="Sculpt Brush")
+
+ layout.separator()
+
layout.menu("VIEW3D_MT_object_animation") # NOTE: provides keyingset access...
layout.menu("VIEW3D_MT_edit_gpencil_interpolate")
layout.separator()
- layout.menu("VIEW3D_MT_edit_gpencil_delete")
layout.operator("gpencil.duplicate_move", text="Duplicate")
layout.operator("gpencil.stroke_subdivide", text="Subdivide")
@@ -3517,7 +3757,7 @@ class VIEW3D_PT_view3d_meshstatvis(Panel):
row = layout.row(align=True)
row.prop(statvis, "overhang_min", text="")
row.prop(statvis, "overhang_max", text="")
- layout.prop(statvis, "overhang_axis", expand=True)
+ layout.row().prop(statvis, "overhang_axis", expand=True)
elif statvis_type == 'THICKNESS':
row = layout.row(align=True)
row.prop(statvis, "thickness_min", text="")
@@ -3787,12 +4027,151 @@ class VIEW3D_PT_context_properties(Panel):
rna_prop_ui.draw(self.layout, context, member, object, False)
-def register():
- bpy.utils.register_module(__name__)
-
-
-def unregister():
- bpy.utils.unregister_module(__name__)
-
-if __name__ == "__main__":
- register()
+classes = (
+ VIEW3D_HT_header,
+ VIEW3D_MT_editor_menus,
+ VIEW3D_MT_transform,
+ VIEW3D_MT_transform_base,
+ VIEW3D_MT_transform_object,
+ VIEW3D_MT_transform_armature,
+ VIEW3D_MT_mirror,
+ VIEW3D_MT_snap,
+ VIEW3D_MT_uv_map,
+ VIEW3D_MT_edit_proportional,
+ VIEW3D_MT_view,
+ VIEW3D_MT_view_cameras,
+ VIEW3D_MT_view_navigation,
+ VIEW3D_MT_view_align,
+ VIEW3D_MT_view_align_selected,
+ VIEW3D_MT_view_viewpoint,
+ VIEW3D_MT_view_borders,
+ VIEW3D_MT_select_object,
+ VIEW3D_MT_select_object_more_less,
+ VIEW3D_MT_select_pose,
+ VIEW3D_MT_select_pose_more_less,
+ VIEW3D_MT_select_particle,
+ VIEW3D_MT_edit_mesh,
+ VIEW3D_MT_edit_mesh_select_similar,
+ VIEW3D_MT_edit_mesh_select_by_trait,
+ VIEW3D_MT_edit_mesh_select_more_less,
+ VIEW3D_MT_select_edit_mesh,
+ VIEW3D_MT_select_edit_curve,
+ VIEW3D_MT_select_edit_surface,
+ VIEW3D_MT_select_edit_text,
+ VIEW3D_MT_select_edit_metaball,
+ VIEW3D_MT_select_edit_lattice,
+ VIEW3D_MT_select_edit_armature,
+ VIEW3D_MT_select_gpencil,
+ VIEW3D_MT_select_paint_mask,
+ VIEW3D_MT_select_paint_mask_vertex,
+ VIEW3D_MT_angle_control,
+ INFO_MT_mesh_add,
+ INFO_MT_curve_add,
+ INFO_MT_surface_add,
+ INFO_MT_metaball_add,
+ INFO_MT_edit_curve_add,
+ INFO_MT_edit_armature_add,
+ INFO_MT_armature_add,
+ INFO_MT_lamp_add,
+ INFO_MT_camera_add,
+ INFO_MT_add,
+ VIEW3D_MT_undo_redo,
+ VIEW3D_MT_object_relations,
+ VIEW3D_MT_object,
+ VIEW3D_MT_object_animation,
+ VIEW3D_MT_object_clear,
+ VIEW3D_MT_object_specials,
+ VIEW3D_MT_object_apply,
+ VIEW3D_MT_object_parent,
+ VIEW3D_MT_object_track,
+ VIEW3D_MT_object_group,
+ VIEW3D_MT_object_constraints,
+ VIEW3D_MT_object_quick_effects,
+ VIEW3D_MT_object_showhide,
+ VIEW3D_MT_make_single_user,
+ VIEW3D_MT_make_links,
+ VIEW3D_MT_object_game,
+ VIEW3D_MT_brush,
+ VIEW3D_MT_brush_paint_modes,
+ VIEW3D_MT_paint_vertex,
+ VIEW3D_MT_hook,
+ VIEW3D_MT_vertex_group,
+ VIEW3D_MT_paint_weight,
+ VIEW3D_MT_sculpt,
+ VIEW3D_MT_hide_mask,
+ VIEW3D_MT_particle,
+ VIEW3D_MT_particle_specials,
+ VIEW3D_MT_particle_showhide,
+ VIEW3D_MT_pose,
+ VIEW3D_MT_pose_transform,
+ VIEW3D_MT_pose_slide,
+ VIEW3D_MT_pose_propagate,
+ VIEW3D_MT_pose_library,
+ VIEW3D_MT_pose_motion,
+ VIEW3D_MT_pose_group,
+ VIEW3D_MT_pose_ik,
+ VIEW3D_MT_pose_constraints,
+ VIEW3D_MT_pose_showhide,
+ VIEW3D_MT_pose_apply,
+ VIEW3D_MT_pose_specials,
+ VIEW3D_MT_bone_options_toggle,
+ VIEW3D_MT_bone_options_enable,
+ VIEW3D_MT_bone_options_disable,
+ VIEW3D_MT_edit_mesh_specials,
+ VIEW3D_MT_edit_mesh_select_mode,
+ VIEW3D_MT_edit_mesh_select_linked,
+ VIEW3D_MT_edit_mesh_select_loops,
+ VIEW3D_MT_edit_mesh_extrude,
+ VIEW3D_MT_edit_mesh_vertices,
+ VIEW3D_MT_edit_mesh_edges,
+ VIEW3D_MT_edit_mesh_edges_data,
+ VIEW3D_MT_edit_mesh_faces,
+ VIEW3D_MT_edit_mesh_normals,
+ VIEW3D_MT_edit_mesh_clean,
+ VIEW3D_MT_edit_mesh_delete,
+ VIEW3D_MT_edit_mesh_showhide,
+ VIEW3D_MT_edit_gpencil,
+ VIEW3D_MT_edit_gpencil_delete,
+ VIEW3D_MT_edit_curve,
+ VIEW3D_MT_edit_curve_ctrlpoints,
+ VIEW3D_MT_edit_curve_segments,
+ VIEW3D_MT_edit_curve_clean,
+ VIEW3D_MT_edit_curve_specials,
+ VIEW3D_MT_edit_curve_delete,
+ VIEW3D_MT_edit_curve_showhide,
+ VIEW3D_MT_edit_surface,
+ VIEW3D_MT_edit_font,
+ VIEW3D_MT_edit_text_chars,
+ VIEW3D_MT_edit_meta,
+ VIEW3D_MT_edit_meta_showhide,
+ VIEW3D_MT_edit_lattice,
+ VIEW3D_MT_edit_armature,
+ VIEW3D_MT_armature_specials,
+ VIEW3D_MT_edit_armature_parent,
+ VIEW3D_MT_edit_armature_roll,
+ VIEW3D_MT_edit_armature_delete,
+ VIEW3D_MT_edit_gpencil_transform,
+ VIEW3D_MT_edit_gpencil_interpolate,
+ VIEW3D_PT_grease_pencil,
+ VIEW3D_PT_grease_pencil_palettecolor,
+ VIEW3D_PT_view3d_properties,
+ VIEW3D_PT_view3d_cursor,
+ VIEW3D_PT_view3d_name,
+ VIEW3D_PT_view3d_display,
+ VIEW3D_PT_view3d_stereo,
+ VIEW3D_PT_view3d_shading,
+ VIEW3D_PT_view3d_motion_tracking,
+ VIEW3D_PT_view3d_meshdisplay,
+ VIEW3D_PT_view3d_meshstatvis,
+ VIEW3D_PT_view3d_curvedisplay,
+ VIEW3D_PT_background_image,
+ VIEW3D_PT_transform_orientations,
+ VIEW3D_PT_etch_a_ton,
+ VIEW3D_PT_context_properties,
+)
+
+
+if __name__ == "__main__": # only for live edit.
+ from bpy.utils import register_class
+ for cls in classes:
+ register_class(cls)