Advertisement
Guest User

Blender Files Panel für Tiles

a guest
Oct 19th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.63 KB | None | 0 0
  1. import bpy
  2. import os
  3.  
  4. # -----------------------------------------------------------------------------------------------------
  5. # the panel is in the properties sidebar.
  6. # -----------------------------------------------------------------------------------------------------
  7.  
  8. class FileItem(bpy.types.UIList):
  9.     name = bpy.props.StringProperty(name="name", default="Unknown")
  10.     tooltip = bpy.props.StringProperty(name="tooltip", default="Hover me!")
  11.     value = bpy.props.IntProperty(name="value", default=22)
  12.  
  13.     # TODO: ggf. hier noch draw_item() ueberschreiben, wenn du ein bestimmtes Aussehen haben willst.
  14.  
  15. class FilesProperties(bpy.types.PropertyGroup)
  16.     item_index = bpy.props.IntProperty(name="item_index", default=0)
  17.     items = bpy.props.CollectionProperty(name="items", type=FileItem)
  18.  
  19. class VIEW3D_read_dir(bpy.types.Operator):
  20.     """Refresh the file list and save it in a scene property."""
  21.     bl_idname = "view3d.read_dir"
  22.     bl_label = "Read Dir"
  23.  
  24.     def execute(self, context):
  25.  
  26.         scene = context.scene
  27.  
  28.         scene.view3d_files.items.clear()
  29.  
  30.         start_path = 'C:/Users/x/Documents' # current directory. Change to your needs. Do NOT use backslashes here.
  31.         for path,dirs,files in os.walk(start_path):
  32.             for filename in files:
  33.                 if filename.endswith(".blend"):                
  34.                     item = scene.view3d_files.items.add()
  35.                     item.name = os.path.join(filename)
  36.                     item.tooltip = "Dummy Tooltip"
  37.  
  38.         return {'FINISHED'}
  39.  
  40. class FilesPanel(bpy.types.Panel):
  41.     bl_label = "FilesPanel"
  42.     bl_space_type = 'VIEW_3D'
  43.     bl_region_type = 'UI'
  44.  
  45.     def draw(self, context):
  46.         layout = self.layout
  47.        
  48.         layout.operator("view3d.read_dir", text="read directory")
  49.  
  50.         scene = context.scene
  51.         row = layout.row()
  52.  
  53.         layout.template_list(listtype_name="FileItem",
  54.             list_id="View3dList",
  55.             dataptr=scene.view3d_files,
  56.             propname="items",
  57.             active_dataptr=scene.view3d_files,
  58.             active_propname="item_index",
  59.             item_dyntip_propname="tooltip",
  60.             rows=5,
  61.             maxrows=5,
  62.             type='DEFAULT')
  63.  
  64. # ------------------------------ register unregister --------------------------------------------------------
  65.  
  66. def register():
  67.     bpy.utils.register_class(FileItem)
  68.     bpy.utils.register_class(FilesProperties)
  69.     bpy.utils.register_class(FilesPanel)
  70.     inject_properties()
  71.  
  72.  
  73. def unregister():
  74.     bpy.utils.unregister_class(FileItem)
  75.     bpy.utils.unregister_class(FilesProperties)
  76.     bpy.utils.unregister_class(FilesPanel)
  77.     remove_properties()
  78.  
  79. def inject_properties():
  80.     bpy.types.Scene.view3d_files = bpy.props.PointerProperty(type=FilesProperties)
  81.  
  82. def remove_properties():
  83.     del bpy.types.Scene.view3d_files
  84.  
  85. if __name__ == "__main__":
  86.     register()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement