Como adicionar um botão para delinear o cabeçalho via script python?

Sep 29 2020

É possível adicionar um botão via python aqui?

Respostas

3 RobertGützkow Sep 29 2020 at 04:52

O cabeçalho do painel de contorno pode ser acessado por meio de bpy.types.OUTLINER_HT_header. É possível adicionar botões adicionais ao cabeçalho anexando ou prefixando uma função de desenho que atribui os operadores relevantes ao layout. A função de desenho pode ser parecida com a seguinte, se sua classe de operadores for chamada EXAMPLE_OT_something.

def draw(self, context):
        self.layout.operator(EXAMPLE_OT_something.bl_idname)

Se o operador foi registrado, a função de desenho pode ser anexada ao cabeçalho. Isso coloca o botão no final do cabeçalho. O uso o .prependcolocaria no início .

bpy.types.OUTLINER_HT_header.append(draw)

Abaixo está um exemplo de complemento que demonstra o conceito.

bl_info = {
    "name": "Outliner Header Button",
    "author": "Robert Guetzkow",
    "version": (1, 0, 0),
    "blender": (2, 81, 0),
    "location": "Outliner",
    "description": "Adds an example button to the outliner header.",
    "wiki_url": "",
    "category": "Outliner"}

import bpy


class EXAMPLE_OT_something(bpy.types.Operator):
    bl_idname = "example.something"
    bl_label = "Do something"
    bl_description = "This operator does something"
    bl_options = {"REGISTER"}

    def execute(self, context):
        print("Hello")
        return {"FINISHED"}


def draw(self, context):
    self.layout.operator(EXAMPLE_OT_something.bl_idname)


classes = (EXAMPLE_OT_something,)


def register():
    for cls in classes:
        bpy.utils.register_class(cls)
        
    bpy.types.OUTLINER_HT_header.append(draw)


def unregister():
    bpy.types.OUTLINER_HT_header.remove(draw)
    
    for cls in classes:
        bpy.utils.unregister_class(cls)


if __name__ == "__main__":
    register()