UI: Replace +/- menus with collapsible ones

Patch D160, by Scott Petrovic with  own modifications.
This commit is contained in:
2014-01-27 18:38:53 +11:00
parent 8f2eec5a15
commit a71f072f9c
29 changed files with 409 additions and 212 deletions

View File

@@ -86290,6 +86290,42 @@
id="path18197"
style="opacity:0.7;fill:url(#linearGradient18212);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.98985863;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
<g
style="display:inline;enable-background:new"
id="g24559-2-1"
transform="translate(279.8665,506.92392)">
<rect
y="111"
x="103"
height="16"
width="16"
id="rect24489-7-4"
style="opacity:0;fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.79999995;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
style="fill:#ececec;fill-opacity:1;stroke:#141414;stroke-width:0.79452544;stroke-opacity:1"
id="rect29842"
width="11.816368"
height="2.1883197"
x="105.18671"
y="-116.88043"
transform="scale(1,-1)" />
<rect
style="fill:#ececec;fill-opacity:1;stroke:#141414;stroke-width:0.79452544;stroke-opacity:1;display:inline;enable-background:new"
id="rect29842-4"
width="11.816368"
height="2.1883197"
x="105.31538"
y="-120.80865"
transform="scale(1,-1)" />
<rect
style="fill:#ececec;fill-opacity:1;stroke:#141414;stroke-width:0.79452544;stroke-opacity:1;display:inline;enable-background:new"
id="rect29842-4-5"
width="11.816368"
height="2.1883197"
x="105.41832"
y="-124.71391"
transform="scale(1,-1)" />
</g>
<g
inkscape:export-ydpi="90"
inkscape:export-xdpi="90"

Before

Width:  |  Height:  |  Size: 4.2 MiB

After

Width:  |  Height:  |  Size: 4.2 MiB

View File

@@ -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__ = ()

View File

@@ -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

View File

@@ -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"

View File

@@ -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"

View File

@@ -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()

View File

@@ -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"

View File

@@ -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'

View File

@@ -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')

View File

@@ -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):

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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)

View File

@@ -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"

View File

@@ -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'

View File

@@ -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"

View File

@@ -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'}:

View File

@@ -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 **********

View File

@@ -73,7 +73,6 @@ void ED_region_visible_rect(struct ARegion *ar, struct rcti *rect);
/* spaces */
void ED_spacetypes_keymap(struct wmKeyConfig *keyconf);
int ED_area_header_switchbutton(const struct bContext *C, struct uiBlock *block, int yco);
int ED_area_header_standardbuttons(const struct bContext *C, struct uiBlock *block, int yco);
/* areas */

View File

@@ -51,9 +51,7 @@ DEF_ICON(MENU_PANEL)
DEF_ICON(BLENDER)
DEF_ICON(GRIP)
DEF_ICON(DOT)
#ifndef DEF_ICON_BLANK_SKIP
DEF_ICON(BLANK004)
#endif
DEF_ICON(COLLAPSEMENU)
DEF_ICON(X)
#ifndef DEF_ICON_BLANK_SKIP
DEF_ICON(BLANK005)

View File

@@ -820,7 +820,7 @@ uiLayout *uiLayoutOverlap(uiLayout *layout);
uiBlock *uiLayoutAbsoluteBlock(uiLayout *layout);
/* templates */
void uiTemplateHeader(uiLayout *layout, struct bContext *C, int menus);
void uiTemplateHeader(uiLayout *layout, struct bContext *C);
void uiTemplateID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, const char *propname,
const char *newop, const char *openop, const char *unlinkop);
void uiTemplateIDBrowse(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, const char *propname,

View File

@@ -91,13 +91,12 @@ void UI_template_fix_linking(void)
/********************** Header Template *************************/
void uiTemplateHeader(uiLayout *layout, bContext *C, int menus)
void uiTemplateHeader(uiLayout *layout, bContext *C)
{
uiBlock *block;
block = uiLayoutAbsoluteBlock(layout);
if (menus) ED_area_header_standardbuttons(C, block, 0);
else ED_area_header_switchbutton(C, block, 0);
ED_area_header_switchbutton(C, block, 0);
}
/********************** Search Callbacks *************************/

View File

@@ -1533,39 +1533,6 @@ int ED_area_header_switchbutton(const bContext *C, uiBlock *block, int yco)
return xco + 1.7 * U.widget_unit;
}
int ED_area_header_standardbuttons(const bContext *C, uiBlock *block, int yco)
{
ScrArea *sa = CTX_wm_area(C);
int xco = 0.4 * U.widget_unit;
uiBut *but;
if (!sa->full)
xco = ED_area_header_switchbutton(C, block, yco);
uiBlockSetEmboss(block, UI_EMBOSSN);
if (sa->flag & HEADER_NO_PULLDOWN) {
but = uiDefIconButBitS(block, TOG, HEADER_NO_PULLDOWN, 0,
ICON_DISCLOSURE_TRI_RIGHT,
xco, yco, U.widget_unit, U.widget_unit * 0.9f,
&(sa->flag), 0, 0, 0, 0,
TIP_("Show pulldown menus"));
}
else {
but = uiDefIconButBitS(block, TOG, HEADER_NO_PULLDOWN, 0,
ICON_DISCLOSURE_TRI_DOWN,
xco, yco, U.widget_unit, U.widget_unit * 0.9f,
&(sa->flag), 0, 0, 0, 0,
TIP_("Hide pulldown menus"));
}
uiButClearFlag(but, UI_BUT_UNDO); /* skip undo on screen buttons */
uiBlockSetEmboss(block, UI_EMBOSS);
return xco + U.widget_unit;
}
/************************ standard UI regions ************************/
void ED_region_panels(const bContext *C, ARegion *ar, int vertical, const char *context, int contextnr)

View File

@@ -3046,9 +3046,9 @@ static int header_toggle_menus_exec(bContext *C, wmOperator *UNUSED(op))
static void SCREEN_OT_header_toggle_menus(wmOperatorType *ot)
{
/* identifiers */
ot->name = "Show/Hide Header Menus";
ot->name = "Expand/Collapse Header Menus";
ot->idname = "SCREEN_OT_header_toggle_menus";
ot->description = "Show or hide the header pulldown menus";
ot->description = "Expand or collapse the header pulldown menus";
/* api callbacks */
ot->exec = header_toggle_menus_exec;
@@ -3069,10 +3069,9 @@ void ED_screens_header_tools_menu_create(bContext *C, uiLayout *layout, void *UN
else
uiItemO(layout, IFACE_("Flip to Top"), ICON_NONE, "SCREEN_OT_header_flip");
if (sa->flag & HEADER_NO_PULLDOWN)
uiItemO(layout, IFACE_("Show Menus"), ICON_NONE, "SCREEN_OT_header_toggle_menus");
else
uiItemO(layout, IFACE_("Hide Menus"), ICON_NONE, "SCREEN_OT_header_toggle_menus");
uiItemO(layout, IFACE_("Collapse Menus"),
(sa->flag & HEADER_NO_PULLDOWN) ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT,
"SCREEN_OT_header_toggle_menus");
uiItemS(layout);

View File

@@ -631,7 +631,6 @@ void RNA_api_ui_layout(StructRNA *srna)
/* templates */
func = RNA_def_function(srna, "template_header", "uiTemplateHeader");
RNA_def_function_flag(func, FUNC_USE_CONTEXT);
RNA_def_boolean(func, "menus", true, "", "The header has menus, and should show menu expander");
func = RNA_def_function(srna, "template_ID", "uiTemplateID");
RNA_def_function_flag(func, FUNC_USE_CONTEXT);

View File

@@ -465,7 +465,7 @@ struct bTheme *UI_GetTheme(void) {STUB_ASSERT(0); return (struct bTheme *) NULL;
/* rna template */
void uiTemplateAnyID(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, char *text) {STUB_ASSERT(0);}
void uiTemplatePathBuilder(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *root_ptr, char *text) {STUB_ASSERT(0);}
void uiTemplateHeader(struct uiLayout *layout, struct bContext *C, int menus) {STUB_ASSERT(0);}
void uiTemplateHeader(struct uiLayout *layout, struct bContext *C) {STUB_ASSERT(0);}
void uiTemplateID(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, char *newop, char *unlinkop) {STUB_ASSERT(0);}
struct uiLayout *uiTemplateModifier(struct uiLayout *layout, struct PointerRNA *ptr) {STUB_ASSERT(0); return (struct uiLayout *) NULL;}
struct uiLayout *uiTemplateConstraint(struct uiLayout *layout, struct PointerRNA *ptr) {STUB_ASSERT(0); return (struct uiLayout *) NULL;}