Skip to content

New placement for the Import/Export buttons for node groups #142

Description

@kolibril13

Placement idea for the import export buttons:
Image

Prompt engineered:

import bpy


# ------------------------------------------------------------
# Operators
# ------------------------------------------------------------

class GN_OT_import_nodes(bpy.types.Operator):
    bl_idname = "gn.import_nodes"
    bl_label = "Import Geometry Nodes"
    bl_description = "Import a Geometry Nodes setup"

    def execute(self, context):
        self.report({'INFO'}, "Import clicked")
        return {'FINISHED'}


class GN_OT_export_nodes(bpy.types.Operator):
    bl_idname = "gn.export_nodes"
    bl_label = "Export Geometry Nodes"
    bl_description = "Export the active Geometry Nodes setup"

    def execute(self, context):
        self.report({'INFO'}, "Export clicked")
        return {'FINISHED'}


# ------------------------------------------------------------
# Header draw 
# ------------------------------------------------------------

def draw_gn_header_right(self, context):
    space = context.space_data

    if not space:
        return
    if space.type != 'NODE_EDITOR':
        return
    if space.tree_type != 'GeometryNodeTree':
        return
    if not space.node_tree:
        return

    layout = self.layout
    layout.separator()

    row = layout.row(align=True)
    row.operator(
        GN_OT_import_nodes.bl_idname,
        text="Import",
        icon='IMPORT'
    )
    row.operator(
        GN_OT_export_nodes.bl_idname,
        text="Export",
        icon='EXPORT'
    )


# ------------------------------------------------------------
# Registration
# ------------------------------------------------------------

classes = (
    GN_OT_import_nodes,
    GN_OT_export_nodes,
)


def register():
    for cls in classes:
        bpy.utils.register_class(cls)

    bpy.types.NODE_HT_header.append(draw_gn_header_right)


def unregister():
    bpy.types.NODE_HT_header.remove(draw_gn_header_right)

    for cls in reversed(classes):
        bpy.utils.unregister_class(cls)


if __name__ == "__main__":
    register()

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions