Fix for bl_info blender versions, many addons used (2, 6, x) instead of (2, 6x, x...
[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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 #
17 # ##### END GPL LICENSE BLOCK #####
18
19 #    <pep8-80 compliant>
20
21 #---------------------------------------------#
22 #    todo
23 #---------------------------------------------#
24 '''
25 - add file selection for single and multiple files
26 - option to enable/disable fake users
27 '''
28
29 #---------------------------------------------#
30 #    changelog
31 #---------------------------------------------#
32 '''
33     "version": (1,2,0)
34         - added missing texture types
35         - new way to filter file types
36         - option for fake user flag
37
38     "version": (1,1,5)
39         - changed addon category to Import-Export
40
41     "version": (1,1,4),
42         filename will be used as texture name (still limited by stringlength)
43
44     "version": (1,1,3),
45         fixed operator and registration
46         added tracker and wiki url\
47
48     version": (1,1,2)
49         replaced image.new() with image.load()
50         changed addon category
51         removed some unused/old code
52
53     version":1.11:
54         added type arg to texture.new() [L48]
55         cleared default filename
56 '''
57
58 #---------------------------------------------#
59 import bpy
60 import os
61 from bpy.props import *
62
63 #addon description
64 bl_info = {
65     "name": "import BrushSet",
66     "author": "Daniel Grauer (kromar)",
67     "version": (1, 2, 0),
68     "blender": (2, 64, 0),
69     "category": "Import-Export",
70     "location": "File > Import > BrushSet",
71     "description": "imports all image files from a folder",
72     "warning": '', # used for warning icon and text in addons panel
73     "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.5/Py/Scripts/Import-Export/BrushSet",
74     "tracker_url": "http://projects.blender.org/tracker/index.php?func=detail&aid=25702&group_id=153&atid=467",
75     }
76
77 #---------------------------------------------#
78
79 #    extension filter (alternative use mimetypes)
80 ext_list = ['.bmp',
81             '.png',
82             '.jpg',
83             '.jp2',
84             '.rgb',
85             '.dds',
86             '.hdr',
87             '.exr',
88             '.dpx',
89             '.cin',
90             '.tga',
91             '.tif'];
92
93 #---------------------------------------------#
94
95 fakeUser = False
96
97 def LoadBrushSet(filepath, filename):
98     for file in os.listdir(filepath):
99         path = (filepath + file)
100
101         #get folder name
102         (f1, f2) = os.path.split(filepath)
103         (f3, foldername) = os.path.split(f1)
104
105         #    filter files by extensions (filter images)
106         for i in ext_list:
107             if file.endswith(i):
108                 print("file: ", file)
109                 #    create new texture
110                 texture = bpy.data.textures.new(file, 'IMAGE')
111                 texture.use_fake_user = fakeUser
112                 print("texture: ", texture)
113
114                 #    now we need to load the image into data
115                 image = bpy.data.images.load(path)
116                 image.use_fake_user = fakeUser
117                 #    image.source = 'FILE' #default is FILE so can remove this
118                 #    image.filepath = path
119                 print("image: ", image, " ", path)
120                 print("texturename: ", texture.name)
121
122                 #    and assign the image to the texture
123                 bpy.data.textures[texture.name].image = image
124
125
126     print("Brush Set imported!")
127
128 #---------------------------------------------#
129
130 class BrushSetImporter(bpy.types.Operator):
131     '''Load Brush Set'''
132     bl_idname = "import_image.brushset"
133     bl_label = "Import BrushSet"
134
135     filename = StringProperty(name="File Name", description="filepath", default="", maxlen=1024, options={'ANIMATABLE'}, subtype='NONE')
136     filepath = StringProperty(name="File Name", description="filepath", default="", maxlen=1024, options={'ANIMATABLE'}, subtype='NONE')
137
138     def execute(self, context):
139         LoadBrushSet(self.properties.filepath, self.properties.filename)
140         return {'FINISHED'}
141
142     def invoke(self, context, event):
143         wm = context.window_manager
144         wm.fileselect_add(self)
145         return {'RUNNING_MODAL'}
146
147 #---------------------------------------------#
148
149 def menu_func(self, context):
150     #clear the default name for import
151     import_name = ""
152
153     self.layout.operator(BrushSetImporter.bl_idname, text = "Brush Set").filename = import_name
154
155
156 #---------------------------------------------#
157 #    GUI
158 #---------------------------------------------#
159
160 '''
161 class Brush_set_UI(bpy.types.Panel):
162
163     bl_space_type ='USER_PREFERENCES'
164     bl_label = 'Brush_Path'
165     bl_region_type = 'WINDOW'
166     bl_options = {'HIDE_HEADER'}
167
168     def draw(self, context):
169
170         scn = context.scene
171         layout = self.layout
172         column = layout.column(align=True)
173         column.label(text='Brush Directory:')
174         column.prop(scn,'filepath')
175 '''
176
177 #---------------------------------------------#
178
179 def register():
180     bpy.utils.register_module(__name__)
181     bpy.types.INFO_MT_file_import.append(menu_func)
182
183 def unregister():
184     bpy.utils.unregister_module(__name__)
185     bpy.types.INFO_MT_file_import.remove(menu_func)
186
187 if __name__ == "__main__":
188     register()