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

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlijenstina <lijenstina@gmail.com>2017-03-11 19:15:37 +0300
committerlijenstina <lijenstina@gmail.com>2017-03-11 19:15:37 +0300
commitf14b4f40c13285bede9fa3b07f79e45fa4952910 (patch)
tree8b05740302db99a2864409fa1c5f8280843d1dfd /space_view3d_spacebar_menu.py
parentb04ab01f947384013c459869f6026c75230e49f7 (diff)
Spacebar Menu: Small context fixes and cleanups
Bumped version to 1.8.4 Remove the Transform, Mirror and Snap to Cursor from the Sculpt menu Replace the separators with the switchable ones in the VIEW3D_OT_Interactive_Mode_Grease_Pencil Add a check for the Particle Edit in the VIEW3D_MT_Object_Interactive_Mode Small style cleanups, use toggle in Preferences
Diffstat (limited to 'space_view3d_spacebar_menu.py')
-rw-r--r--space_view3d_spacebar_menu.py101
1 files changed, 51 insertions, 50 deletions
diff --git a/space_view3d_spacebar_menu.py b/space_view3d_spacebar_menu.py
index 0f174c96..178dadb9 100644
--- a/space_view3d_spacebar_menu.py
+++ b/space_view3d_spacebar_menu.py
@@ -20,7 +20,7 @@
bl_info = {
"name": "Dynamic Context Menu",
"author": "meta-androcto",
- "version": (1, 8, 3),
+ "version": (1, 8, 4),
"blender": (2, 77, 0),
"location": "View3D > Spacebar",
"description": "Object Mode Context Sensitive Spacebar Menu",
@@ -31,7 +31,16 @@ bl_info = {
}
import bpy
-from bpy.types import (Operator, Menu,)
+from bpy.types import (
+ Operator,
+ Menu,
+ AddonPreferences,
+ )
+from bpy.props import (
+ BoolProperty,
+ StringProperty,
+ )
+
from bl_ui.properties_paint_common import UnifiedPaintPanel
@@ -102,7 +111,6 @@ class VIEW3D_MT_Space_Dynamic_Menu(Menu):
layout.operator("view3d.toolshelf", icon='MENU_PANEL')
layout.operator("view3d.properties", icon='MENU_PANEL')
-
# Mesh Edit Mode #
if obj and obj.type == 'MESH' and obj.mode in {'EDIT'}:
layout.operator("wm.search_menu", text="Search", icon='VIEWZOOM')
@@ -147,10 +155,6 @@ class VIEW3D_MT_Space_Dynamic_Menu(Menu):
UseSeparator(self, context)
layout.menu("VIEW3D_MT_Sculpt_Specials", icon='SOLO_OFF')
UseSeparator(self, context)
- layout.menu("VIEW3D_MT_TransformMenu", icon='MANIPUL')
- layout.menu("VIEW3D_MT_MirrorMenu", icon='MOD_MIRROR')
- layout.menu("VIEW3D_MT_CursorMenu", icon='CURSOR')
- UseSeparator(self, context)
layout.menu("VIEW3D_MT_UndoS", icon='ARROW_LEFTRIGHT')
layout.menu("VIEW3D_MT_Object_Interactive_Mode", icon='EDIT')
UseSeparator(self, context)
@@ -999,10 +1003,13 @@ class VIEW3D_MT_CursorMenuLite(Menu):
class InteractiveMode(Menu):
bl_idname = "VIEW3D_MT_Object_Interactive_Mode"
bl_label = "Interactive Mode"
- bl_description = "Menu of objects interactive modes (Window Types)"
+ bl_description = "Menu of objects' interactive modes (Window Types)"
def draw(self, context):
layout = self.layout
+ obj = context.active_object
+ psys = hasattr(obj, "particle_systems")
+ psys_items = len(obj.particle_systems.items()) > 0 if psys else False
layout.operator(SetObjectMode.bl_idname, text="Object", icon="OBJECT_DATAMODE").mode = "OBJECT"
layout.operator(SetObjectMode.bl_idname, text="Edit", icon="EDITMODE_HLT").mode = "EDIT"
@@ -1010,7 +1017,9 @@ class InteractiveMode(Menu):
layout.operator(SetObjectMode.bl_idname, text="Vertex Paint", icon="VPAINT_HLT").mode = "VERTEX_PAINT"
layout.operator(SetObjectMode.bl_idname, text="Weight Paint", icon="WPAINT_HLT").mode = "WEIGHT_PAINT"
layout.operator(SetObjectMode.bl_idname, text="Texture Paint", icon="TPAINT_HLT").mode = "TEXTURE_PAINT"
- layout.operator(SetObjectMode.bl_idname, text="Particle Edit", icon="PARTICLEMODE").mode = "PARTICLE_EDIT"
+ if obj and psys_items:
+ layout.operator(SetObjectMode.bl_idname, text="Particle Edit",
+ icon="PARTICLEMODE").mode = "PARTICLE_EDIT"
if context.gpencil_data:
layout.operator("view3d.interactive_mode_grease_pencil", icon="GREASEPENCIL")
@@ -1068,48 +1077,39 @@ class VIEW3D_MT_Edit_Gpencil(Menu):
def draw(self, context):
toolsettings = context.tool_settings
-
layout = self.layout
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()
+ UseSeparator(self, context)
layout.menu("VIEW3D_MT_edit_gpencil_transform")
layout.operator("transform.mirror", text="Mirror")
layout.menu("GPENCIL_MT_snap")
-
- layout.separator()
+ UseSeparator(self, context)
layout.menu("VIEW3D_MT_object_animation") # NOTE: provides keyingset access...
-
- layout.separator()
+ UseSeparator(self, context)
layout.menu("VIEW3D_MT_edit_gpencil_delete")
layout.operator("gpencil.duplicate_move", text="Duplicate")
-
- layout.separator()
+ UseSeparator(self, context)
layout.menu("VIEW3D_MT_select_gpencil")
-
- layout.separator()
+ UseSeparator(self, context)
layout.operator("gpencil.copy", text="Copy")
layout.operator("gpencil.paste", text="Paste")
-
- layout.separator()
+ UseSeparator(self, context)
layout.prop_menu_enum(toolsettings, "proportional_edit")
layout.prop_menu_enum(toolsettings, "proportional_edit_falloff")
-
- layout.separator()
+ UseSeparator(self, context)
layout.operator("gpencil.reveal")
layout.operator("gpencil.hide", text="Show Active Layer Only").unselected = True
layout.operator("gpencil.hide", text="Hide Active Layer").unselected = False
-
- layout.separator()
+ UseSeparator(self, context)
layout.operator_menu_enum("gpencil.move_to_layer", "layer", text="Move to Layer")
layout.operator_menu_enum("gpencil.convert", "type", text="Convert to Geometry...")
@@ -1165,7 +1165,8 @@ class VIEW3D_MT_Camera_Options(Menu):
layout.operator_context = 'EXEC_REGION_WIN'
layout.operator("object.camera_add", text="Add Camera", icon='OUTLINER_OB_CAMERA')
self.layout.operator("view3d.object_as_camera", text="Object As Camera", icon='OUTLINER_OB_CAMERA')
- self.layout.operator("view3d.viewnumpad", text="View Active Camera", icon='OUTLINER_OB_CAMERA').type = 'CAMERA'
+ self.layout.operator("view3d.viewnumpad", text="View Active Camera",
+ icon='OUTLINER_OB_CAMERA').type = 'CAMERA'
class VIEW3D_MT_Object_Data_Link(Menu):
@@ -1289,7 +1290,6 @@ class VIEW3D_MT_Edit_Mesh(Menu):
# ********** Edit Multiselect **********
-
class VIEW3D_MT_Edit_Multi(Menu):
bl_label = "Multi Select"
@@ -2810,14 +2810,17 @@ class SetObjectMode(Operator):
bl_description = "I set the interactive mode of object"
bl_options = {'REGISTER'}
- mode = bpy.props.StringProperty(name="Interactive mode", default="OBJECT")
+ mode = StringProperty(
+ name="Interactive mode",
+ default="OBJECT"
+ )
def execute(self, context):
if (context.active_object):
try:
bpy.ops.object.mode_set(mode=self.mode)
except TypeError:
- msg = context.active_object.name + " It is not possible to enter into the interactive mode"
+ msg = context.active_object.name + ": It is not possible to enter into the interactive mode"
self.report(type={"WARNING"}, message=msg)
else:
self.report(type={"WARNING"}, message="There is no active object")
@@ -2896,28 +2899,27 @@ def UseBrushesLists():
# Addon Preferences #
-class VIEW3D_MT_Space_Dynamic_Menu_Pref(bpy.types.AddonPreferences):
+class VIEW3D_MT_Space_Dynamic_Menu_Pref(AddonPreferences):
bl_idname = __name__
- use_separators = bpy.props.BoolProperty(
- name="Use Separators in the menus",
- default=True,
- description=("Use separators in the menus, a trade-off between \n"
- "readability vs. using more space for displaying items")
- )
-
- use_brushes_lists = bpy.props.BoolProperty(
- name="Use compact menus for brushes",
- default=False,
- description=("Use more compact menus instead \n"
- "of thumbnails for displaying brushes")
- )
+ use_separators = BoolProperty(
+ name="Use Separators in the menus",
+ default=True,
+ description=("Use separators in the menus, a trade-off between \n"
+ "readability vs. using more space for displaying items")
+ )
+ use_brushes_lists = BoolProperty(
+ name="Use compact menus for brushes",
+ default=False,
+ description=("Use more compact menus instead \n"
+ "of thumbnails for displaying brushes")
+ )
def draw(self, context):
layout = self.layout
- row = layout.row()
- row.prop(self, "use_separators")
- row.prop(self, "use_brushes_lists")
+ row = layout.row(align=True)
+ row.prop(self, "use_separators", toggle=True)
+ row.prop(self, "use_brushes_lists", toggle=True)
# List The Classes #
@@ -3017,7 +3019,6 @@ classes = [
# Register Classes & Hotkeys #
-
def register():
for cls in classes:
bpy.utils.register_class(cls)
@@ -3030,8 +3031,7 @@ def register():
kmi.properties.name = "VIEW3D_MT_Space_Dynamic_Menu"
-# Unegister Classes & Hotkeys #
-
+# Unregister Classes & Hotkeys #
def unregister():
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
@@ -3047,5 +3047,6 @@ def unregister():
if "bl_rna" in cls.__dict__:
bpy.utils.unregister_class(cls)
+
if __name__ == "__main__":
register()