7c9ce06a3d55dba779db58ac8e0414056fa07fb7
[blender-addons-contrib.git] / io_import_BrushSet.py
1 # ***** BEGIN GPL LICENSE BLOCK *****
2 #
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software Foundation,
15 # Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
16 #
17 # ***** END GPL LICENCE BLOCK *****
18
19 # ----------------------------------------------------------------------------#    
20
21 '''
22 todo:
23 - add file selection for single and multiple files
24
25 changelog:
26     "version": (1,1,4),
27         filename will be used as texture name (still limited by stringlength)
28
29
30     "version": (1,1,3),
31     fixed operator and registration
32     added tracker and wiki url\
33     
34 version": (1,1,2)
35     replaced image.new() with image.load()
36     changed addon category
37     removed some unused/old code    
38     
39 version":1.11:
40     added type arg to texture.new() [L48]
41     cleared default filename
42 ''' 
43
44 # ----------------------------------------------------------------------------#    
45
46 import bpy
47 import os
48 from bpy.props import *
49
50 #addon description
51 bl_info = {
52     "name": "import BrushSet",
53     "author": "Daniel Grauer",
54     "version": (1, 1, 5),
55     "blender": (2, 5, 6),
56     "category": "Import-Export",
57     "location": "File > Import > BrushSet",
58     "description": "imports all image files from a folder",
59     "warning": '', # used for warning icon and text in addons panel
60     "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/BrushSet",
61     "tracker_url": "http://projects.blender.org/tracker/index.php?func=detail&aid=25702&group_id=153&atid=467",
62     }
63
64 print(" ")
65 print("*------------------------------------------------------------------------------*")
66 print("*                          initializing BrushSet import                        *")
67 print("*------------------------------------------------------------------------------*")
68 print(" ")
69
70 #extension filter (alternative use mimetypes)
71 ext_list = ['jpg',
72             'bmp',
73             'iris',
74             'png',
75             'jpeg',
76             'targa',
77             'tga'];
78
79 def LoadBrushSet(filepath, filename):
80     for file in os.listdir(filepath):
81         path = (filepath + file)
82         #get folder name
83         (f1, f2) = os.path.split(filepath)
84         (f3, foldername) = os.path.split(f1)
85         
86         texturename = foldername         # file        "texture"    foldername
87         
88         #filter ext_list
89         if file.split('.')[-1].lower() in ext_list: 
90             #create new texture
91             texture = bpy.data.textures.new(texturename, 'IMAGE')    #watch it, string limit 21 ?!
92
93             #create new image
94             image = bpy.data.images.load(path)
95             image.source = "FILE"
96             image.filepath = path
97             bpy.data.textures[texture.name].image = image
98             
99             print("imported: " + file)
100     print("Brush Set imported!")  
101
102 # ----------------------------------------------------------------------------#    
103
104 class BrushSetImporter(bpy.types.Operator):
105     '''Load Brush Set'''
106     bl_idname = "import_image.brushset"
107     bl_label = "Import BrushSet"
108
109     filename = StringProperty(name="File Name", description="filepath", default="", maxlen=1024, options={'ANIMATABLE'}, subtype='NONE')
110     filepath = StringProperty(name="File Name", description="filepath", default="", maxlen=1024, options={'ANIMATABLE'}, subtype='NONE')
111     
112     def execute(self, context):
113         LoadBrushSet(self.properties.filepath, self.properties.filename)
114         return {'FINISHED'}
115
116     def invoke(self, context, event):
117         wm = context.window_manager
118         wm.fileselect_add(self)
119         return {'RUNNING_MODAL'}
120
121 # ----------------------------------------------------------------------------#    
122
123 def menu_func(self, context):
124     #clear the default name for import
125     default_name = "" 
126
127     self.layout.operator(BrushSetImporter.bl_idname, text="Brush Set").filename = default_name
128
129 # ----------------------------------------------------------------------------#    
130
131 def register():    
132     bpy.utils.register_module(__name__)
133     bpy.types.INFO_MT_file_import.append(menu_func)
134
135 def unregister():
136     bpy.utils.unregister_module(__name__)
137     bpy.types.INFO_MT_file_import.remove(menu_func)
138
139 if __name__ == "__main__":
140     register()
141
142 print(" ")
143 print("*------------------------------------------------------------------------------*")
144 print(" ")