Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import bpy
- import os
- # -----------------------------------------------------------------------------------------------------
- # the panel is in the properties sidebar.
- # -----------------------------------------------------------------------------------------------------
- class FileItem(bpy.types.UIList):
- name = bpy.props.StringProperty(name="name", default="Unknown")
- tooltip = bpy.props.StringProperty(name="tooltip", default="Hover me!")
- value = bpy.props.IntProperty(name="value", default=22)
- # TODO: ggf. hier noch draw_item() ueberschreiben, wenn du ein bestimmtes Aussehen haben willst.
- class FilesProperties(bpy.types.PropertyGroup)
- item_index = bpy.props.IntProperty(name="item_index", default=0)
- items = bpy.props.CollectionProperty(name="items", type=FileItem)
- class VIEW3D_read_dir(bpy.types.Operator):
- """Refresh the file list and save it in a scene property."""
- bl_idname = "view3d.read_dir"
- bl_label = "Read Dir"
- def execute(self, context):
- scene = context.scene
- scene.view3d_files.items.clear()
- start_path = 'C:/Users/x/Documents' # current directory. Change to your needs. Do NOT use backslashes here.
- for path,dirs,files in os.walk(start_path):
- for filename in files:
- if filename.endswith(".blend"):
- item = scene.view3d_files.items.add()
- item.name = os.path.join(filename)
- item.tooltip = "Dummy Tooltip"
- return {'FINISHED'}
- class FilesPanel(bpy.types.Panel):
- bl_label = "FilesPanel"
- bl_space_type = 'VIEW_3D'
- bl_region_type = 'UI'
- def draw(self, context):
- layout = self.layout
- layout.operator("view3d.read_dir", text="read directory")
- scene = context.scene
- row = layout.row()
- layout.template_list(listtype_name="FileItem",
- list_id="View3dList",
- dataptr=scene.view3d_files,
- propname="items",
- active_dataptr=scene.view3d_files,
- active_propname="item_index",
- item_dyntip_propname="tooltip",
- rows=5,
- maxrows=5,
- type='DEFAULT')
- # ------------------------------ register unregister --------------------------------------------------------
- def register():
- bpy.utils.register_class(FileItem)
- bpy.utils.register_class(FilesProperties)
- bpy.utils.register_class(FilesPanel)
- inject_properties()
- def unregister():
- bpy.utils.unregister_class(FileItem)
- bpy.utils.unregister_class(FilesProperties)
- bpy.utils.unregister_class(FilesPanel)
- remove_properties()
- def inject_properties():
- bpy.types.Scene.view3d_files = bpy.props.PointerProperty(type=FilesProperties)
- def remove_properties():
- del bpy.types.Scene.view3d_files
- if __name__ == "__main__":
- register()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement