I’ve been playing around with python, and I have stumbled upon a problem:
I’m trying to add new menus in the info bar, (next the the file menu) and here’s the code I have
import bpy
from bpy.types import Header, Menu
class test(Menu):
bl_space_type = 'INFO'
bl_label = 'testwin'
def draw(self, context):
layout = self.layout()
#insert function here
def register():
bpy.utils.register_class(test)
def unregister():
bpy.utils.unregister_class(test)
if __name__ == "__main__":
register()
It doesn’t give me any errors, nor any new menus, so I’m stumped.
This is not something simple. You may need to redo the whole Header. And that would be bad for the addons to append or prepend some function in the header “INFO”.
It would be something like this:
import bpyfrom bpy.types import Header, Menu
class test(Menu):
bl_idname = 'INFO_MT_my_menu'
bl_label = 'testwin'
def draw(self, context):
layout = self.layout
layout.label(text="test:")
#insert function here
class INFO_HT_header(Header):
bl_space_type = 'INFO'
def draw(self, context):
layout = self.layout
window = context.window
scene = context.scene
rd = scene.render
row = layout.row(align=True)
row.template_header()
scene = context.scene
rd = scene.render
row.menu("INFO_MT_file")
row.menu("INFO_MT_my_menu")
if rd.use_game_engine:
row.menu("INFO_MT_game")
else:
row.menu("INFO_MT_render")
row.menu("INFO_MT_window")
row.menu("INFO_MT_help")
if window.screen.show_fullscreen:
layout.operator("screen.back_to_previous", icon='SCREEN_BACK', text="Back to Previous")
layout.separator()
else:
layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete")
layout.template_ID(context.screen, "scene", new="scene.new", unlink="scene.delete")
layout.separator()
if rd.has_multiple_engines:
layout.prop(rd, "engine", text="")
layout.separator()
layout.template_running_jobs()
layout.template_reports_banner()
row = layout.row(align=True)
if bpy.app.autoexec_fail is True and bpy.app.autoexec_fail_quiet is False:
row.label("Auto-run disabled", icon='ERROR')
if bpy.data.is_saved:
props = row.operator("wm.revert_mainfile", icon='SCREEN_BACK', text="Reload Trusted")
props.use_scripts = True
row.operator("script.autoexec_warn_clear", text="Ignore")
# include last so text doesn't push buttons out of the header
row.label(bpy.app.autoexec_fail_message)
return
row.operator("wm.splash", text="", icon='BLENDER', emboss=False)
row.label(text=scene.statistics(), translate=False)
def register():
bpy.utils.register_class(test)
bpy.utils.register_class(INFO_HT_header)
def unregister():
bpy.utils.unregister_class(INFO_HT_header)
import space_info
bpy.utils.register_class(space_info.INFO_HT_header)
bpy.utils.unregister_class(test)
if __name__ == "__main__":
register()
But I do not recommend. Maybe someone has a better idea.