1
$\begingroup$

I'm currently writing my own exporter and want to add an info text to my export options.

Inspired by the obj-Exporter i use the ExportHelper class as a basis. Sadly I could not found any good information on how this actually works. From what I can see, it uses context.window_manager.fileselect_add(self) to open the file dialog, which will then automatically show all the properties of my class.

However I would like to have a bit more control over the GUI of my exporter. Is it possible to add more kinds of control element, just like in a panel? Like a text that explains some details, or a button that performs an additional action.

$\endgroup$

1 Answer 1

1
$\begingroup$

Add a draw method to the Operator class, eg in text editor file export operator template operator_file_export.py

class ExportSomeData(Operator, ExportHelper):
    """This appears in the tooltip of the operator and in the generated docs"""
    bl_idname = "export_test.some_data"  # important since its how bpy.ops.import_test.some_data is constructed
    bl_label = "Export Some Data"

    # ExportHelper mixin class uses this
    filename_ext = ".txt"

    filter_glob = StringProperty(
            default="*.txt",
            options={'HIDDEN'},
            maxlen=255,  # Max internal buffer length, longer would be clamped.
            )

    # List of operator properties, the attributes will be assigned
    # to the class instance from the operator settings before calling.
    use_setting = BoolProperty(
            name="Example Boolean",
            description="Example Tooltip",
            default=True,
            )

    type = EnumProperty(
            name="Example Enum",
            description="Choose between two items",
            items=(('OPT_A', "First Option", "Description one"),
                   ('OPT_B', "Second Option", "Description two")),
            default='OPT_A',
            )

    def draw(self, context):
        layout = self.layout
        row = layout.row()
        row.label("Custom Draw Method")
        row = layout.row()
        row.prop(self, "type")

    def execute(self, context):
        return write_some_data(context, self.filepath, self.use_setting)
$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .