diff options
author | Stephen Leger <stephen@3dservices.ch> | 2018-11-16 17:31:26 +0300 |
---|---|---|
committer | Stephen Leger <stephen@3dservices.ch> | 2018-11-16 17:34:51 +0300 |
commit | bfbbd112c170d96e86838208b8781fd46df52514 (patch) | |
tree | 9fda29f608a32f8ac5a88e5873730bf6422dd280 /archipack/archipack_preset.py | |
parent | 64198b8817042962dcdedc71bb81ee9492b19a4d (diff) |
archipack 2.8 compatibility (step1)
Diffstat (limited to 'archipack/archipack_preset.py')
-rw-r--r-- | archipack/archipack_preset.py | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/archipack/archipack_preset.py b/archipack/archipack_preset.py index dcaa7970..42668bb9 100644 --- a/archipack/archipack_preset.py +++ b/archipack/archipack_preset.py @@ -170,7 +170,9 @@ class PresetMenuItem(): def __init__(self, thumbsize, preset, image=None): name = bpy.path.display_name_from_filepath(preset) self.preset = preset - self.handle = ThumbHandle(thumbsize, name, image, draggable=True) + self.image = image + self.image.gl_load() + self.handle = ThumbHandle(thumbsize, name, self.image, draggable=True) self.enable = True def filter(self, keywords): @@ -179,6 +181,11 @@ class PresetMenuItem(): return False return True + def cleanup(self): + if self.image: + self.image.gl_free() + # bpy.data.images.remove(self.image) + def set_pos(self, context, pos): self.handle.set_pos(context, pos) @@ -268,12 +275,15 @@ class PresetMenu(): return file_list def clearImages(self): + for item in self.menuItems: + item.cleanup() for image in bpy.data.images: if image.filepath_raw in self.imageList: # image.user_clear() bpy.data.images.remove(image, do_unlink=True) self.imageList.clear() + def make_menuitem(self, filepath): """ @TODO: @@ -377,7 +387,7 @@ class PresetMenu(): class PresetMenuOperator(): - preset_operator = StringProperty( + preset_operator : StringProperty( options={'SKIP_SAVE'}, default="script.execute_preset" ) @@ -414,7 +424,11 @@ class PresetMenuOperator(): if self.preset_operator == 'script.execute_preset': # call from preset menu # ensure right active_object class - d = getattr(bpy.types, self.preset_subdir).datablock(context.active_object) + o = context.active_object + if o.data and self.preset_subdir in o.data: + d = getattr(o.data, self.preset_subdir)[0] + elif self.preset_subdir in o: + d = getattr(o, self.preset_subdir)[0] if d is not None: d.auto_update = False # print("Archipack execute_preset loading auto_update:%s" % d.auto_update) @@ -525,16 +539,22 @@ class ArchipackPreset(AddPresetBase): def background_render(self, context, cls, preset): generator = os.path.dirname(os.path.realpath(__file__)) + os.path.sep + "archipack_thumbs.py" + addon_name = __name__.split('.')[0] + matlib_path = context.user_preferences.addons[addon_name].preferences.matlib_path # Run external instance of blender like the original thumbnail generator. cmd = [ bpy.app.binary_path, "--background", + "--factory-startup", "-noaudio", + # "--addons", addon_name, "--python", generator, "--", + "addon:" + addon_name, + "matlib:" + matlib_path, "cls:" + cls, "preset:" + preset - ] + ] # print(repr(cmd)) subprocess.Popen(cmd) @@ -555,7 +575,7 @@ class ArchipackPreset(AddPresetBase): preset = os.path.join(target_path, filename) + ".py" cls = self.preset_subdir[10:] - print("post cb cls:%s preset:%s" % (cls, preset)) + # print("post cb cls:%s preset:%s" % (cls, preset)) self.background_render(context, cls, preset) return |