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:
Diffstat (limited to 'archipack/archipack_material.py')
-rw-r--r--archipack/archipack_material.py73
1 files changed, 36 insertions, 37 deletions
diff --git a/archipack/archipack_material.py b/archipack/archipack_material.py
index ddb44009..cbec80cd 100644
--- a/archipack/archipack_material.py
+++ b/archipack/archipack_material.py
@@ -181,7 +181,7 @@ class MatlibsManager():
def apply(self, context, slot_index, name, link=False):
o = context.active_object
- o.select = True
+ o.select_set(state=True)
# material with same name exist in scene
mat = self.from_data(name)
@@ -225,6 +225,8 @@ class MaterialSetManager():
self.objects = {}
# hold reference of dynamic enumerator
self.enums = {}
+ self.default_enum = [('DEFAULT', 'Default', '', 0)]
+
def get_filename(self, object_type):
@@ -262,9 +264,9 @@ class MaterialSetManager():
material_sets = {}
# create file object, and set open mode
- if os.path.exists(filename):
- try:
- f = open(filename, 'r')
+
+ try:
+ with open(filename, 'r') as f:
lines = f.readlines()
for line in lines:
@@ -272,17 +274,15 @@ class MaterialSetManager():
if str(s_key) not in material_sets.keys():
material_sets[s_key] = []
material_sets[s_key].append(mat_name.strip())
- except:
- print("Archipack: An error occurred while loading {}".format(filename))
- pass
- finally:
- f.close()
+ except:
+ print("Archipack: material preset for {} not found".format(object_type))
+ pass
- s_keys = material_sets.keys()
- for s_key in s_keys:
- self.register_set(object_type, s_key, material_sets[s_key])
+ s_keys = material_sets.keys()
+ for s_key in s_keys:
+ self.register_set(object_type, s_key, material_sets[s_key])
- self.make_enum(object_type, s_keys)
+ self.make_enum(object_type, s_keys)
def save(self, object_type):
# always save in user prefs
@@ -330,17 +330,15 @@ class MaterialSetManager():
if object_type not in self.objects.keys():
self.load(object_type)
if object_type not in self.objects.keys():
- print("Archipack: Unknown object type {}".format(object_type))
+ # print("Archipack: Unknown object type {}".format(object_type))
return None
if set_name not in self.objects[object_type].keys():
- print("Archipack: set {} not found".format(set_name))
+ # print("Archipack: set {} not found".format(set_name))
return None
return self.objects[object_type][set_name]
def make_enum(self, object_type, s_keys):
- if len(s_keys) < 1:
- self.enums[object_type] = [('DEFAULT', 'Default', '', 0)]
- else:
+ if len(s_keys) > 0:
self.enums[object_type] = [(s.upper(), s.capitalize(), '', i) for i, s in enumerate(s_keys)]
def get_enum(self, object_type):
@@ -351,7 +349,10 @@ class MaterialSetManager():
if object_type not in self.objects.keys():
self.objects[object_type] = {}
- return self.enums[object_type]
+ if object_type in self.enums:
+ return self.enums[object_type]
+
+ return self.default_enum
def material_enum(self, context):
@@ -367,12 +368,12 @@ def update(self, context):
class archipack_material(PropertyGroup):
- category = StringProperty(
+ category : StringProperty(
name="Category",
description="Archipack object name",
default=""
)
- material = EnumProperty(
+ material : EnumProperty(
name="Material",
description="Material Set name",
items=material_enum,
@@ -411,17 +412,17 @@ class archipack_material(PropertyGroup):
mats = setman.get_materials(self.category, self.material)
- if mats is None:
+ if mats is None or len(mats) < 1:
return False
for ob in sel:
- context.scene.objects.active = ob
+ context.view_layer.objects.active = ob
for slot_index, mat_name in enumerate(mats):
if slot_index >= len(ob.material_slots):
bpy.ops.object.material_slot_add()
self.apply_material(context, slot_index, mat_name)
- context.scene.objects.active = o
+ context.view_layer.objects.active = o
return True
@@ -431,7 +432,7 @@ class ARCHIPACK_PT_material(Panel):
bl_label = "Archipack Material"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
- # bl_category = 'ArchiPack'
+ bl_category = 'Archipack'
@classmethod
def poll(cls, context):
@@ -442,8 +443,8 @@ class ARCHIPACK_PT_material(Panel):
props = context.active_object.archipack_material[0]
row = layout.row(align=True)
row.prop(props, 'material', text="")
- row.operator('archipack.material_add', icon="ZOOMIN", text="")
- row.operator('archipack.material_remove', icon="ZOOMOUT", text="")
+ row.operator('archipack.material_add', icon="ADD", text="")
+ row.operator('archipack.material_remove', icon="REMOVE", text="")
class ARCHIPACK_OT_material(Operator):
@@ -452,12 +453,12 @@ class ARCHIPACK_OT_material(Operator):
bl_description = "Add archipack material"
bl_options = {'REGISTER', 'UNDO'}
- category = StringProperty(
+ category : StringProperty(
name="Category",
description="Archipack object name",
default=""
)
- material = StringProperty(
+ material : StringProperty(
name="Material",
description="Material Set name",
default=""
@@ -484,13 +485,11 @@ class ARCHIPACK_OT_material(Operator):
res = False
pass
- if res:
- # print("ARCHIPACK_OT_material.apply {} {}".format(self.category, self.material))
- return {'FINISHED'}
- else:
+ if not res:
print("Archipack: unable to add material {} for {}".format(self.material, self.category))
- self.report({'WARNING'}, 'Material {} for {} not found'.format(self.material, self.category))
- return {'CANCELLED'}
+ # self.report({'WARNING'}, 'Material {} for {} not found'.format(self.material, self.category))
+
+ return {'FINISHED'}
class ARCHIPACK_OT_material_add(Operator):
@@ -499,7 +498,7 @@ class ARCHIPACK_OT_material_add(Operator):
bl_description = "Add a set of archipack material"
bl_options = {'REGISTER', 'UNDO'}
- material = StringProperty(
+ material : StringProperty(
name="Material",
description="Material Set name",
default=""
@@ -603,5 +602,5 @@ def unregister():
bpy.utils.unregister_class(ARCHIPACK_OT_material_add)
bpy.utils.unregister_class(ARCHIPACK_OT_material_remove)
bpy.utils.unregister_class(ARCHIPACK_OT_material_library)
- bpy.utils.unregister_class(archipack_material)
del Object.archipack_material
+ bpy.utils.unregister_class(archipack_material)