1b1c90c8a21ae1a4833692cf86d22e6b4b67a698
[blender.git] / release / scripts / templates / operator_export.py
1 import bpy
2
3
4 def write_some_data(context, filepath, use_some_setting):
5     print("running write_some_data...")
6     f = open(filepath, 'w')
7     f.write("Hello World %s" % use_some_setting)
8     f.close()
9
10     return {'FINISHED'}
11
12
13 # ExportHelper is a helper class, defines filename and
14 # invoke() function which calls the file selector.
15 from io_utils import ExportHelper
16 from bpy.props import StringProperty, BoolProperty, EnumProperty
17
18
19 class ExportSomeData(bpy.types.Operator, ExportHelper):
20     '''This appears in the tooltip of the operator and in the generated docs.'''
21     bl_idname = "export.some_data"  # this is important since its how bpy.ops.export.some_data is constructed
22     bl_label = "Export Some Data"
23
24     # ExportHelper mixin class uses this
25     filename_ext = ".txt"
26
27     filter_glob = StringProperty(default="*.txt", options={'HIDDEN'})
28
29     # List of operator properties, the attributes will be assigned
30     # to the class instance from the operator settings before calling.
31     use_setting = BoolProperty(name="Example Boolean", description="Example Tooltip", default=True)
32
33     type = EnumProperty(items=(('OPT_A', "First Option", "Description one"),
34                                ('OPT_B', "Second Option", "Description two."),
35                                ),
36                         name="Example Enum",
37                         description="Choose between two items",
38                         default='OPT_A')
39
40     @classmethod
41     def poll(cls, context):
42         return context.active_object != None
43
44     def execute(self, context):
45         return write_some_data(context, self.filepath, self.use_setting)
46
47
48 # Only needed if you want to add into a dynamic menu
49 def menu_func_export(self, context):
50     self.layout.operator(ExportSomeData.bl_idname, text="Text Export Operator")
51
52
53 def register():
54     bpy.utils.register_class(ExportSomeData)
55     bpy.types.INFO_MT_file_export.append(menu_func_export)
56
57
58 def unregister():
59     bpy.utils.unregister_class(ExportSomeData)
60     bpy.types.INFO_MT_file_export.remove(menu_func_export)
61
62
63 if __name__ == "__main__":
64     register()
65
66     # test call
67     bpy.ops.export.some_data('INVOKE_DEFAULT')