Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCansecoGPC <machaquiro@yahoo.es>2020-06-17 21:15:39 +0300
committerCansecoGPC <machaquiro@yahoo.es>2020-06-17 21:15:39 +0300
commitf0099eb92c04c09189e23781041eacdb70eb8fe1 (patch)
tree9eb86318b013d32e9fdeac24af04c1f34b8601f9 /io_import_BrushSet.py
parentaea05413b7689f1c72e04804b4faabc3694aec91 (diff)
Promote Import BrushSet
Diffstat (limited to 'io_import_BrushSet.py')
-rw-r--r--io_import_BrushSet.py181
1 files changed, 181 insertions, 0 deletions
diff --git a/io_import_BrushSet.py b/io_import_BrushSet.py
new file mode 100644
index 00000000..0c788fcb
--- /dev/null
+++ b/io_import_BrushSet.py
@@ -0,0 +1,181 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8-80 compliant>
+
+#---------------------------------------------#
+# todo
+#---------------------------------------------#
+'''
+- add file selection for single and multiple files
+- option to enable/disable fake users
+'''
+
+#---------------------------------------------#
+import bpy
+import os
+from bpy.props import *
+
+# addon description
+bl_info = {
+ "name": "Import BrushSet",
+ "author": "Daniel Grauer (kromar), CansecoGPC",
+ "version": (1, 2, 2),
+ "blender": (2, 80, 0),
+ "location": "File > Import > BrushSet",
+ "description": "Imports all image files from a folder.",
+ "warning": '', # used for warning icon and text in addons panel
+ "doc_url": "http://wiki.blender.org/index.php/Extensions:2.5/Py/Scripts/Import-Export/BrushSet",
+ "tracker_url": "https://developer.blender.org/maniphest/task/edit/form/2/",
+ "category": "Import-Export",
+}
+
+#---------------------------------------------#
+
+# extension filter (alternative use mimetypes)
+# TODO: rewrite so it tries to load image and if it fails we know its not a format blender can load
+ext_list = ['.bmp',
+ '.png',
+ '.jpg',
+ '.jp2',
+ '.rgb',
+ '.dds',
+ '.hdr',
+ '.exr',
+ '.dpx',
+ '.cin',
+ '.tga',
+ '.tif'];
+
+#---------------------------------------------#
+
+fakeUser = False
+
+def LoadBrushSet(filepath, filename):
+ for file in os.listdir(filepath):
+ path = (filepath + file)
+
+ # get folder name
+ (f1, f2) = os.path.split(filepath)
+ (f3, foldername) = os.path.split(f1)
+
+ # filter files by extensions (filter images)
+ if any(file.lower().endswith(ext) for ext in ext_list):
+ print("file: ", file)
+ # create new texture
+ texture = bpy.data.textures.new(file, 'IMAGE')
+ texture.use_fake_user = fakeUser
+ print("texture: ", texture)
+
+ # now we need to load the image into data
+ image = bpy.data.images.load(path)
+ image.use_fake_user = fakeUser
+ # image.source = 'FILE' #default is FILE so can remove this
+ # image.filepath = path
+ print("image: ", image, " ", path)
+ print("texturename: ", texture.name)
+
+ # and assign the image to the texture
+ bpy.data.textures[texture.name].image = image
+
+
+ print("Brush Set imported!")
+
+#---------------------------------------------#
+
+class BrushSetImporter(bpy.types.Operator):
+ '''Load Brush Set'''
+ bl_idname = "import_image.brushset"
+ bl_label = "Import BrushSet"
+
+ filename: StringProperty(name = "File Name",
+ description = "filepath",
+ default = "",
+ maxlen = 1024,
+ options = {'ANIMATABLE'},
+ subtype = 'NONE')
+
+ filepath: StringProperty(name = "File Name",
+ description = "filepath",
+ default = "",
+ maxlen = 1024,
+ options = {'ANIMATABLE'},
+ subtype = 'NONE')
+
+ def execute(self, context):
+ LoadBrushSet(self.properties.filepath, self.properties.filename)
+ return {'FINISHED'}
+
+ def invoke(self, context, event):
+ wm = context.window_manager
+ wm.fileselect_add(self)
+ return {'RUNNING_MODAL'}
+
+#---------------------------------------------#
+
+def menu_func(self, context):
+ # clear the default name for import
+ import_name = ""
+
+ self.layout.operator(BrushSetImporter.bl_idname, text = "Brush Set").filename = import_name
+
+
+#---------------------------------------------#
+# GUI
+#---------------------------------------------#
+
+'''
+class Brush_set_UI(bpy.types.Panel):
+
+ bl_space_type ='USER_PREFERENCES'
+ bl_label = 'Brush_Path'
+ bl_region_type = 'WINDOW'
+ bl_options = {'HIDE_HEADER'}
+
+ def draw(self, context):
+
+ scn = context.scene
+ layout = self.layout
+ column = layout.column(align=True)
+ column.label(text='Brush Directory:')
+ column.prop(scn,'filepath')
+'''
+
+#---------------------------------------------#
+
+classes = (
+ BrushSetImporter,
+)
+
+
+def register():
+ from bpy.utils import register_class
+ for cls in classes:
+ register_class(cls)
+ bpy.types.TOPBAR_MT_file_import.append(menu_func)
+
+
+def unregister():
+ from bpy.utils import unregister_class
+ for cls in reversed(classes):
+ unregister_class(cls)
+ bpy.types.TOPBAR_MT_file_import.remove(menu_func)
+
+
+if __name__ == "__main__":
+ register()