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')
-rw-r--r--release/scripts/modules/bpy_types.py11
-rw-r--r--release/scripts/startup/bl_ui/space_clip.py70
-rw-r--r--release/scripts/startup/bl_ui/space_console.py15
-rw-r--r--release/scripts/startup/bl_ui/space_dopesheet.py41
-rw-r--r--release/scripts/startup/bl_ui/space_filebrowser.py2
-rw-r--r--release/scripts/startup/bl_ui/space_graph.py23
-rw-r--r--release/scripts/startup/bl_ui/space_image.py54
-rw-r--r--release/scripts/startup/bl_ui/space_info.py35
-rw-r--r--release/scripts/startup/bl_ui/space_logic.py18
-rw-r--r--release/scripts/startup/bl_ui/space_nla.py23
-rw-r--r--release/scripts/startup/bl_ui/space_node.py21
-rw-r--r--release/scripts/startup/bl_ui/space_outliner.py25
-rw-r--r--release/scripts/startup/bl_ui/space_properties.py2
-rw-r--r--release/scripts/startup/bl_ui/space_sequencer.py29
-rw-r--r--release/scripts/startup/bl_ui/space_text.py33
-rw-r--r--release/scripts/startup/bl_ui/space_time.py21
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py10
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py93
18 files changed, 363 insertions, 163 deletions
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py
index f7af297a0e0..0b9893cea51 100644
--- a/release/scripts/modules/bpy_types.py
+++ b/release/scripts/modules/bpy_types.py
@@ -753,6 +753,17 @@ class Menu(StructRNA, _GenericUI, metaclass=RNAMeta):
self.preset_operator,
filter_ext=lambda ext: ext.lower() in {".py", ".xml"})
+ @classmethod
+ def draw_collapsible(cls, context, layout):
+ # helper function for (optionally) collapsed header menus
+ # only usable within headers
+ if context.area.show_menus:
+ cls.draw_menus(layout, context)
+ else:
+ layout.separator()
+ layout.menu(cls.__name__, icon='COLLAPSEMENU')
+ layout.separator()
+
class Region(StructRNA):
__slots__ = ()
diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py
index 3a203c77463..28d1d52924e 100644
--- a/release/scripts/startup/bl_ui/space_clip.py
+++ b/release/scripts/startup/bl_ui/space_clip.py
@@ -51,18 +51,7 @@ class CLIP_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- if context.area.show_menus:
- sub = row.row(align=True)
- sub.menu("CLIP_MT_view")
-
- if sc.view == 'CLIP':
- if clip:
- sub.menu("CLIP_MT_select")
- sub.menu("CLIP_MT_clip")
- sub.menu("CLIP_MT_track")
- sub.menu("CLIP_MT_reconstruction")
- else:
- sub.menu("CLIP_MT_clip")
+ CLIP_MT_tracking_editor_menus.draw_collapsible(context, layout)
row = layout.row()
row.template_ID(sc, "clip", open="clip.open")
@@ -128,16 +117,7 @@ class CLIP_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- if context.area.show_menus:
- sub = row.row(align=True)
- sub.menu("CLIP_MT_view")
-
- if clip:
- sub.menu("MASK_MT_select")
- sub.menu("CLIP_MT_clip") # XXX - remove?
- sub.menu("MASK_MT_mask")
- else:
- sub.menu("CLIP_MT_clip") # XXX - remove?
+ CLIP_MT_masking_editor_menus.draw_collapsible(context, layout)
row = layout.row()
row.template_ID(sc, "clip", open="clip.open")
@@ -169,6 +149,52 @@ class CLIP_HT_header(Header):
layout.template_running_jobs()
+class CLIP_MT_tracking_editor_menus(Menu):
+ bl_idname = "CLIP_MT_tracking_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ sc = context.space_data
+ clip = sc.clip
+
+ layout.menu("CLIP_MT_view")
+
+ if sc.view == 'CLIP':
+ if clip:
+ layout.menu("CLIP_MT_select")
+ layout.menu("CLIP_MT_clip")
+ layout.menu("CLIP_MT_track")
+ layout.menu("CLIP_MT_reconstruction")
+ else:
+ layout.menu("CLIP_MT_clip")
+
+
+class CLIP_MT_masking_editor_menus(Menu):
+
+ bl_idname = "CLIP_MT_masking_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ layout = self.layout
+
+ layout.menu("CLIP_MT_view")
+
+ if clip:
+ layout.menu("MASK_MT_select")
+ layout.menu("CLIP_MT_clip") # XXX - remove?
+ layout.menu("MASK_MT_mask")
+ else:
+ layout.menu("CLIP_MT_clip") # XXX - remove?
+
+
class CLIP_PT_clip_view_panel:
@classmethod
diff --git a/release/scripts/startup/bl_ui/space_console.py b/release/scripts/startup/bl_ui/space_console.py
index e097dfe802d..ec16cfd89be 100644
--- a/release/scripts/startup/bl_ui/space_console.py
+++ b/release/scripts/startup/bl_ui/space_console.py
@@ -29,12 +29,23 @@ class CONSOLE_HT_header(Header):
layout.template_header()
- if context.area.show_menus:
- layout.menu("CONSOLE_MT_console")
+ CONSOLE_MT_editor_menus.draw_collapsible(context, layout)
layout.operator("console.autocomplete", text="Autocomplete")
+class CONSOLE_MT_editor_menus(Menu):
+ bl_idname = "CONSOLE_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ layout.menu("CONSOLE_MT_console")
+
+
class CONSOLE_MT_console(Menu):
bl_label = "Console"
diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py
index 9d317033bb9..269c960ee7e 100644
--- a/release/scripts/startup/bl_ui/space_dopesheet.py
+++ b/release/scripts/startup/bl_ui/space_dopesheet.py
@@ -107,20 +107,7 @@ class DOPESHEET_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- if context.area.show_menus:
- row.menu("DOPESHEET_MT_view")
- row.menu("DOPESHEET_MT_select")
- row.menu("DOPESHEET_MT_marker")
-
- if st.mode == 'DOPESHEET' or (st.mode == 'ACTION' and st.action is not None):
- row.menu("DOPESHEET_MT_channel")
- elif st.mode == 'GPENCIL':
- row.menu("DOPESHEET_MT_gpencil_channel")
-
- if st.mode != 'GPENCIL':
- row.menu("DOPESHEET_MT_key")
- else:
- row.menu("DOPESHEET_MT_gpencil_frame")
+ DOPESHEET_MT_editor_menus.draw_collapsible(context, layout)
layout.prop(st, "mode", text="")
layout.prop(st.dopesheet, "show_summary", text="Summary")
@@ -144,6 +131,32 @@ class DOPESHEET_HT_header(Header):
row.operator("action.paste", text="", icon='PASTEDOWN')
+class DOPESHEET_MT_editor_menus(Menu):
+ bl_idname = "DOPESHEET_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ st = context.space_data
+
+ layout.menu("DOPESHEET_MT_view")
+ layout.menu("DOPESHEET_MT_select")
+ layout.menu("DOPESHEET_MT_marker")
+
+ if st.mode == 'DOPESHEET' or (st.mode == 'ACTION' and st.action is not None):
+ layout.menu("DOPESHEET_MT_channel")
+ elif st.mode == 'GPENCIL':
+ layout.menu("DOPESHEET_MT_gpencil_channel")
+
+ if st.mode != 'GPENCIL':
+ layout.menu("DOPESHEET_MT_key")
+ else:
+ layout.menu("DOPESHEET_MT_gpencil_frame")
+
+
class DOPESHEET_MT_view(Menu):
bl_label = "View"
diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py b/release/scripts/startup/bl_ui/space_filebrowser.py
index 201ac0a72d0..b90eb7a89c3 100644
--- a/release/scripts/startup/bl_ui/space_filebrowser.py
+++ b/release/scripts/startup/bl_ui/space_filebrowser.py
@@ -29,7 +29,7 @@ class FILEBROWSER_HT_header(Header):
st = context.space_data
- layout.template_header(menus=False)
+ layout.template_header()
row = layout.row()
row.separator()
diff --git a/release/scripts/startup/bl_ui/space_graph.py b/release/scripts/startup/bl_ui/space_graph.py
index 61e2f10a057..775f398bc78 100644
--- a/release/scripts/startup/bl_ui/space_graph.py
+++ b/release/scripts/startup/bl_ui/space_graph.py
@@ -35,12 +35,7 @@ class GRAPH_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- if context.area.show_menus:
- row.menu("GRAPH_MT_view")
- row.menu("GRAPH_MT_select")
- row.menu("GRAPH_MT_marker")
- row.menu("GRAPH_MT_channel")
- row.menu("GRAPH_MT_key")
+ GRAPH_MT_editor_menus.draw_collapsible(context, layout)
layout.prop(st, "mode", text="")
@@ -65,6 +60,22 @@ class GRAPH_HT_header(Header):
row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')
+class GRAPH_MT_editor_menus(Menu):
+ bl_idname = "GRAPH_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ layout.menu("GRAPH_MT_view")
+ layout.menu("GRAPH_MT_select")
+ layout.menu("GRAPH_MT_marker")
+ layout.menu("GRAPH_MT_channel")
+ layout.menu("GRAPH_MT_key")
+
+
class GRAPH_MT_view(Menu):
bl_label = "View"
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index cb22ee7a580..9b3c2267aba 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -373,25 +373,7 @@ class IMAGE_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- # menus
- if context.area.show_menus:
- sub = row.row(align=True)
- sub.menu("IMAGE_MT_view")
-
- if show_uvedit:
- sub.menu("IMAGE_MT_select")
- if show_maskedit:
- sub.menu("MASK_MT_select")
-
- if ima and ima.is_dirty:
- sub.menu("IMAGE_MT_image", text="Image*")
- else:
- sub.menu("IMAGE_MT_image", text="Image")
-
- if show_uvedit:
- sub.menu("IMAGE_MT_uvs")
- if show_maskedit:
- sub.menu("MASK_MT_mask")
+ MASK_MT_editor_menus.draw_collapsible(context, layout)
layout.template_ID(sima, "image", new="image.new", open="image.open")
if not show_render:
@@ -450,6 +432,40 @@ class IMAGE_HT_header(Header):
layout.prop(sima, "use_realtime_update", text="", icon_only=True, icon='LOCKED')
+class MASK_MT_editor_menus(Menu):
+ bl_idname = "MASK_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ sima = context.space_data
+ ima = sima.image
+
+ show_render = sima.show_render
+ show_uvedit = sima.show_uvedit
+ show_maskedit = sima.show_maskedit
+
+ layout.menu("IMAGE_MT_view")
+
+ if show_uvedit:
+ layout.menu("IMAGE_MT_select")
+ if show_maskedit:
+ layout.menu("MASK_MT_select")
+
+ if ima and ima.is_dirty:
+ layout.menu("IMAGE_MT_image", text="Image*")
+ else:
+ layout.menu("IMAGE_MT_image", text="Image")
+
+ if show_uvedit:
+ layout.menu("IMAGE_MT_uvs")
+ if show_maskedit:
+ layout.menu("MASK_MT_mask")
+
+
class IMAGE_PT_image_properties(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'UI'
diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py
index 6457075c9e2..769cc53d953 100644
--- a/release/scripts/startup/bl_ui/space_info.py
+++ b/release/scripts/startup/bl_ui/space_info.py
@@ -34,15 +34,7 @@ class INFO_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- if context.area.show_menus:
- sub = row.row(align=True)
- sub.menu("INFO_MT_file")
- if rd.use_game_engine:
- sub.menu("INFO_MT_game")
- else:
- sub.menu("INFO_MT_render")
- sub.menu("INFO_MT_window")
- sub.menu("INFO_MT_help")
+ INFO_MT_editor_menus.draw_collapsible(context, layout)
if window.screen.show_fullscreen:
layout.operator("screen.back_to_previous", icon='SCREEN_BACK', text="Back to Previous")
@@ -79,6 +71,29 @@ class INFO_HT_header(Header):
row.label(text=scene.statistics(), translate=False)
+class INFO_MT_editor_menus(Menu):
+ bl_idname = "INFO_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ scene = context.scene
+ rd = scene.render
+
+ layout.menu("INFO_MT_file")
+
+ if rd.use_game_engine:
+ layout.menu("INFO_MT_game")
+ else:
+ layout.menu("INFO_MT_render")
+
+ layout.menu("INFO_MT_window")
+ layout.menu("INFO_MT_help")
+
+
class INFO_MT_file(Menu):
bl_label = "File"
@@ -132,7 +147,7 @@ class INFO_MT_file(Menu):
layout.operator_context = 'EXEC_AREA'
if bpy.data.is_dirty and context.user_preferences.view.use_quit_dialog:
- layout.operator_context = 'INVOKE_SCREEN' # quit dialog
+ layout.operator_context = 'INVOKE_SCREEN' # quit dialog
layout.operator("wm.quit_blender", text="Quit", icon='QUIT')
diff --git a/release/scripts/startup/bl_ui/space_logic.py b/release/scripts/startup/bl_ui/space_logic.py
index 730398171d6..9792a26d224 100644
--- a/release/scripts/startup/bl_ui/space_logic.py
+++ b/release/scripts/startup/bl_ui/space_logic.py
@@ -93,10 +93,20 @@ class LOGIC_HT_header(Header):
layout.template_header()
- if context.area.show_menus:
- row = layout.row(align=True)
- row.menu("LOGIC_MT_view")
- row.menu("LOGIC_MT_logicbricks_add")
+ LOGIC_MT_editor_menus.draw_collapsible(context, layout)
+
+
+class LOGIC_MT_editor_menus(Menu):
+ bl_idname = "LOGIC_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ layout.menu("LOGIC_MT_view")
+ layout.menu("LOGIC_MT_logicbricks_add")
class LOGIC_MT_view(Menu):
diff --git a/release/scripts/startup/bl_ui/space_nla.py b/release/scripts/startup/bl_ui/space_nla.py
index dd3ec33d56b..e41086f6da1 100644
--- a/release/scripts/startup/bl_ui/space_nla.py
+++ b/release/scripts/startup/bl_ui/space_nla.py
@@ -35,18 +35,29 @@ class NLA_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- if context.area.show_menus:
- row.menu("NLA_MT_view")
- row.menu("NLA_MT_select")
- row.menu("NLA_MT_marker")
- row.menu("NLA_MT_edit")
- row.menu("NLA_MT_add")
+ NLA_MT_editor_menus.draw_collapsible(context, layout)
dopesheet_filter(layout, context)
layout.prop(st, "auto_snap", text="")
+class NLA_MT_editor_menus(Menu):
+ bl_idname = "NLA_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ layout.menu("NLA_MT_view")
+ layout.menu("NLA_MT_select")
+ layout.menu("NLA_MT_marker")
+ layout.menu("NLA_MT_edit")
+ layout.menu("NLA_MT_add")
+
+
class NLA_MT_view(Menu):
bl_label = "View"
diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py
index 3bf2977d778..a91c9a31769 100644
--- a/release/scripts/startup/bl_ui/space_node.py
+++ b/release/scripts/startup/bl_ui/space_node.py
@@ -36,11 +36,7 @@ class NODE_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- if context.area.show_menus:
- row.menu("NODE_MT_view")
- row.menu("NODE_MT_select")
- row.menu("NODE_MT_add")
- row.menu("NODE_MT_node")
+ NODE_MT_editor_menus.draw_collapsible(context, layout)
layout.prop(snode, "tree_type", text="", expand=True)
@@ -115,6 +111,21 @@ class NODE_HT_header(Header):
layout.template_running_jobs()
+class NODE_MT_editor_menus(Menu):
+ bl_idname = "NODE_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ layout.menu("NODE_MT_view")
+ layout.menu("NODE_MT_select")
+ layout.menu("NODE_MT_add")
+ layout.menu("NODE_MT_node")
+
+
class NODE_MT_add(bpy.types.Menu):
bl_space_type = 'NODE_EDITOR'
bl_label = "Add"
diff --git a/release/scripts/startup/bl_ui/space_outliner.py b/release/scripts/startup/bl_ui/space_outliner.py
index 16f639eafc4..01165bf2889 100644
--- a/release/scripts/startup/bl_ui/space_outliner.py
+++ b/release/scripts/startup/bl_ui/space_outliner.py
@@ -34,12 +34,7 @@ class OUTLINER_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- if context.area.show_menus:
- sub = row.row(align=True)
- sub.menu("OUTLINER_MT_view")
- sub.menu("OUTLINER_MT_search")
- if space.display_mode == 'DATABLOCKS':
- sub.menu("OUTLINER_MT_edit_datablocks")
+ OUTLINER_MT_editor_menus.draw_collapsible(context, layout)
layout.prop(space, "display_mode", text="")
@@ -64,6 +59,24 @@ class OUTLINER_HT_header(Header):
row.label(text="No Keying Set active")
+class OUTLINER_MT_editor_menus(Menu):
+ bl_idname = "OUTLINER_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ space = context.space_data
+
+ layout.menu("OUTLINER_MT_view")
+ layout.menu("OUTLINER_MT_search")
+
+ if space.display_mode == 'DATABLOCKS':
+ layout.menu("OUTLINER_MT_edit_datablocks")
+
+
class OUTLINER_MT_view(Menu):
bl_label = "View"
diff --git a/release/scripts/startup/bl_ui/space_properties.py b/release/scripts/startup/bl_ui/space_properties.py
index 758713b5cc4..f0ca01ec3ba 100644
--- a/release/scripts/startup/bl_ui/space_properties.py
+++ b/release/scripts/startup/bl_ui/space_properties.py
@@ -30,7 +30,7 @@ class PROPERTIES_HT_header(Header):
view = context.space_data
row = layout.row()
- row.template_header(menus=False)
+ row.template_header()
row.prop(view, "context", expand=True, icon_only=True)
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 6f28bcb2225..eab4f5ea541 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -63,14 +63,7 @@ class SEQUENCER_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- if context.area.show_menus:
- row.menu("SEQUENCER_MT_view")
-
- if st.view_type in {'SEQUENCER', 'SEQUENCER_PREVIEW'}:
- row.menu("SEQUENCER_MT_select")
- row.menu("SEQUENCER_MT_marker")
- row.menu("SEQUENCER_MT_add")
- row.menu("SEQUENCER_MT_strip")
+ SEQUENCER_MT_editor_menus.draw_collapsible(context, layout)
layout.prop(st, "view_type", expand=True, text="")
@@ -112,6 +105,26 @@ class SEQUENCER_HT_header(Header):
layout.template_running_jobs()
+class SEQUENCER_MT_editor_menus(Menu):
+ bl_idname = "SEQUENCER_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ st = context.space_data
+
+ layout.menu("SEQUENCER_MT_view")
+
+ if st.view_type in {'SEQUENCER', 'SEQUENCER_PREVIEW'}:
+ layout.menu("SEQUENCER_MT_select")
+ layout.menu("SEQUENCER_MT_marker")
+ layout.menu("SEQUENCER_MT_add")
+ layout.menu("SEQUENCER_MT_strip")
+
+
class SEQUENCER_MT_view_toggle(Menu):
bl_label = "View Type"
diff --git a/release/scripts/startup/bl_ui/space_text.py b/release/scripts/startup/bl_ui/space_text.py
index 32cb1009492..a430fb09165 100644
--- a/release/scripts/startup/bl_ui/space_text.py
+++ b/release/scripts/startup/bl_ui/space_text.py
@@ -34,21 +34,14 @@ class TEXT_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- if context.area.show_menus:
- row.menu("TEXT_MT_view")
- row.menu("TEXT_MT_text")
-
- if text:
- row.menu("TEXT_MT_edit")
- row.menu("TEXT_MT_format")
-
- row.menu("TEXT_MT_templates")
+ TEXT_MT_editor_menus.draw_collapsible(context, layout)
if text and text.is_modified:
sub = row.row(align=True)
sub.alert = True
sub.operator("text.resolve_conflict", text="", icon='HELP')
+ row = layout.row(align=True)
row.template_ID(st, "text", new="text.new", unlink="text.unlink", open="text.open")
row = layout.row(align=True)
@@ -84,6 +77,28 @@ class TEXT_HT_header(Header):
else "Text: Internal")
+class TEXT_MT_editor_menus(Menu):
+ bl_idname = "TEXT_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ st = context.space_data
+ text = st.text
+
+ layout.menu("TEXT_MT_view")
+ layout.menu("TEXT_MT_text")
+
+ if text:
+ layout.menu("TEXT_MT_edit")
+ layout.menu("TEXT_MT_format")
+
+ layout.menu("TEXT_MT_templates")
+
+
class TEXT_PT_properties(Panel):
bl_space_type = 'TEXT_EDITOR'
bl_region_type = 'UI'
diff --git a/release/scripts/startup/bl_ui/space_time.py b/release/scripts/startup/bl_ui/space_time.py
index 4cb67181fdb..c0d55536991 100644
--- a/release/scripts/startup/bl_ui/space_time.py
+++ b/release/scripts/startup/bl_ui/space_time.py
@@ -34,11 +34,7 @@ class TIME_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- if context.area.show_menus:
- row.menu("TIME_MT_view")
- row.menu("TIME_MT_marker")
- row.menu("TIME_MT_frame")
- row.menu("TIME_MT_playback")
+ TIME_MT_editor_menus.draw_collapsible(context, layout)
row = layout.row(align=True)
row.prop(scene, "use_preview_range", text="", toggle=True)
@@ -96,6 +92,21 @@ class TIME_HT_header(Header):
row.operator("anim.keyframe_delete", text="", icon='KEY_DEHLT')
+class TIME_MT_editor_menus(Menu):
+ bl_idname = "TIME_MT_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ layout.menu("TIME_MT_view")
+ layout.menu("TIME_MT_marker")
+ layout.menu("TIME_MT_frame")
+ layout.menu("TIME_MT_playback")
+
+
class TIME_MT_marker(Menu):
bl_label = "Marker"
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 8d4fd47508c..72785fc2c15 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -48,7 +48,7 @@ class USERPREF_HT_header(Header):
def draw(self, context):
layout = self.layout
- layout.template_header(menus=False)
+ layout.template_header()
userpref = context.user_preferences
@@ -432,12 +432,12 @@ class USERPREF_PT_system(Panel):
col.label(text="Might fail for Mesh editing selection!")
col.separator()
col.prop(system, "use_region_overlap")
-
+
col.separator()
col.label(text="Text Draw Options:")
col.prop(system, "use_text_antialiasing")
-
+
col.separator()
col.label(text="Textures:")
@@ -917,7 +917,7 @@ class USERPREF_PT_file(Panel):
col.prop(paths, "save_version")
col.prop(paths, "recent_files")
col.prop(paths, "use_save_preview_images")
-
+
col.separator()
col.label(text="Auto Save:")
@@ -1047,7 +1047,7 @@ class USERPREF_PT_input(Panel):
sub.row().prop(inputs, "view_rotate_method", expand=True)
sub.separator()
-
+
sub.label(text="Zoom Style:")
sub.row().prop(inputs, "view_zoom_method", text="")
if inputs.view_zoom_method in {'DOLLY', 'CONTINUE'}:
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index cc264eabafd..062345103ef 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -37,47 +37,9 @@ class VIEW3D_HT_header(Header):
row = layout.row(align=True)
row.template_header()
+ sub = row.row(align=True)
- # Menus
- if context.area.show_menus:
- sub = row.row(align=True)
-
- sub.menu("VIEW3D_MT_view")
-
- # Select Menu
- if mode_string in {'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'}:
- mesh = obj.data
- if mesh.use_paint_mask:
- sub.menu("VIEW3D_MT_select_paint_mask")
- elif mesh.use_paint_mask_vertex and mode_string == 'PAINT_WEIGHT':
- sub.menu("VIEW3D_MT_select_paint_mask_vertex")
- elif mode_string not in {'SCULPT'}:
- sub.menu("VIEW3D_MT_select_%s" % mode_string.lower())
-
- if mode_string == 'OBJECT':
- sub.menu("INFO_MT_add", text="Add")
- elif mode_string == 'EDIT_MESH':
- sub.menu("INFO_MT_mesh_add", text="Add")
- elif mode_string == 'EDIT_CURVE':
- sub.menu("INFO_MT_curve_add", text="Add")
- elif mode_string == 'EDIT_SURFACE':
- sub.menu("INFO_MT_surface_add", text="Add")
- elif mode_string == 'EDIT_METABALL':
- sub.menu("INFO_MT_metaball_add", text="Add")
- elif mode_string == 'EDIT_ARMATURE':
- sub.menu("INFO_MT_edit_armature_add", text="Add")
-
- if edit_object:
- sub.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower())
- elif obj:
- if mode_string not in {'PAINT_TEXTURE'}:
- sub.menu("VIEW3D_MT_%s" % mode_string.lower())
- if mode_string in {'SCULPT', 'PAINT_VERTEX', 'PAINT_WEIGHT', 'PAINT_TEXTURE'}:
- sub.menu("VIEW3D_MT_brush")
- if mode_string == 'SCULPT':
- sub.menu("VIEW3D_MT_hide_mask")
- else:
- sub.menu("VIEW3D_MT_object")
+ VIEW3D_MT_editor_menus.draw_collapsible(context, layout)
# Contains buttons like Mode, Pivot, Manipulator, Layer, Mesh Select Mode...
row = layout
@@ -143,6 +105,57 @@ class VIEW3D_HT_header(Header):
row.operator("pose.paste", text="", icon='PASTEFLIPDOWN').flipped = 1
+class VIEW3D_MT_editor_menus(Menu):
+ bl_space_type = 'VIEW3D_MT_editor_menus'
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ obj = context.active_object
+ mode_string = context.mode
+ edit_object = context.edit_object
+
+ layout.menu("VIEW3D_MT_view")
+
+ # Select Menu
+ if mode_string in {'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'}:
+ 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':
+ layout.menu("VIEW3D_MT_select_paint_mask_vertex")
+ elif mode_string not in {'EDIT_TEXT', 'SCULPT'}:
+ layout.menu("VIEW3D_MT_select_%s" % mode_string.lower())
+
+ if mode_string == 'OBJECT':
+ layout.menu("INFO_MT_add", text="Add")
+ elif mode_string == 'EDIT_MESH':
+ layout.menu("INFO_MT_mesh_add", text="Add")
+ elif mode_string == 'EDIT_CURVE':
+ layout.menu("INFO_MT_curve_add", text="Add")
+ elif mode_string == 'EDIT_SURFACE':
+ layout.menu("INFO_MT_surface_add", text="Add")
+ elif mode_string == 'EDIT_METABALL':
+ layout.menu("INFO_MT_metaball_add", text="Add")
+ elif mode_string == 'EDIT_ARMATURE':
+ layout.menu("INFO_MT_edit_armature_add", text="Add")
+
+ if edit_object:
+ layout.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower())
+ elif obj:
+ if mode_string not in {'PAINT_TEXTURE'}:
+ layout.menu("VIEW3D_MT_%s" % mode_string.lower())
+ if mode_string in {'SCULPT', 'PAINT_VERTEX', 'PAINT_WEIGHT', 'PAINT_TEXTURE'}:
+ layout.menu("VIEW3D_MT_brush")
+ if mode_string == 'SCULPT':
+ layout.menu("VIEW3D_MT_hide_mask")
+ else:
+ layout.menu("VIEW3D_MT_object")
+
+
# ********** Menu **********