append/prepend class methods for the header and panels (previously only worked for menus)

Example of adding a button to the view header;

 def draw_custom(self, context): self.layout.operator("some.operator")
 bpy.types.VIEW3D_HT_header.append(draw_custom)
This commit is contained in:
Campbell Barton
2010-01-18 16:47:26 +00:00
parent 13f28b6fa4
commit eedc3c09d1

View File

@@ -436,11 +436,11 @@ class Macro(StructRNA, metaclass=OrderedMeta):
return ops.macro_define(self, opname)
class Menu(StructRNA):
class _GenericUI:
__slots__ = ()
@classmethod
def _dyn_menu_initialize(cls):
def _dyn_ui_initialize(cls):
draw_funcs = getattr(cls.draw, "_draw_funcs", None)
if draw_funcs is None:
@@ -457,14 +457,26 @@ class Menu(StructRNA):
@classmethod
def append(cls, draw_func):
"""Prepend an draw function to this menu, takes the same arguments as the menus draw function."""
draw_funcs = cls._dyn_menu_initialize()
draw_funcs = cls._dyn_ui_initialize()
draw_funcs.append(draw_func)
@classmethod
def prepend(cls, draw_func):
"""Prepend a draw function to this menu, takes the same arguments as the menus draw function."""
draw_funcs = cls._dyn_menu_initialize()
draw_funcs.insert(0, draw_func)
draw_funcs = cls._dyn_ui_initialize()
draw_funcs.insert(0, draw_func)
class Panel(StructRNA, _GenericUI):
__slots__ = ()
class Header(StructRNA, _GenericUI):
__slots__ = ()
class Menu(StructRNA, _GenericUI):
__slots__ = ()
def path_menu(self, searchpaths, operator):
layout = self.layout