Jak dodać przycisk do nagłówka outlinera za pomocą skryptu w Pythonie?

Sep 29 2020

Czy można tutaj dodać przycisk przez Pythona?

Odpowiedzi

3 RobertGützkow Sep 29 2020 at 04:52

Dostęp do nagłówka panelu konspektu można uzyskać przez bpy.types.OUTLINER_HT_header. Możliwe jest dodanie dodatkowych przycisków do nagłówka, dołączając lub poprzedzając funkcję rysującą, która przypisuje odpowiednie operatory do układu. Funkcja rysująca może wyglądać następująco, jeśli zostanie wywołana Twoja klasa operatora EXAMPLE_OT_something.

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

Jeśli operator został zarejestrowany, funkcja rysowania może zostać dołączona do nagłówka. Spowoduje to umieszczenie przycisku na końcu nagłówka. Użycie .prependumieściłoby to na początku .

bpy.types.OUTLINER_HT_header.append(draw)

Poniżej znajduje się przykładowy dodatek, który demonstruje tę koncepcję.

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