[Bf-extensions-cvs] [6888525a] master: archipack: fix icons not correctly unregister

Stephen Leger noreply at git.blender.org
Wed Jun 7 04:33:14 CEST 2017


Commit: 6888525a09906245fc3dfd236fa2430485c98b8a
Author: Stephen Leger
Date:   Wed Jun 7 04:31:55 2017 +0200
Branches: master
https://developer.blender.org/rBAC6888525a09906245fc3dfd236fa2430485c98b8a

archipack: fix icons not correctly unregister

===================================================================

M	archipack/__init__.py

===================================================================

diff --git a/archipack/__init__.py b/archipack/__init__.py
index 371bbd94..56c0bcc4 100644
--- a/archipack/__init__.py
+++ b/archipack/__init__.py
@@ -112,7 +112,7 @@ from bpy.props import (
     IntProperty, FloatProperty, FloatVectorProperty
     )
 from bpy.utils import previews
-icons_coll = {}
+icons_collection = {}
 
 
 # ----------------------------------------------------
@@ -280,13 +280,15 @@ class TOOLS_PT_Archipack_PolyLib(Panel):
                 (context.object is not None and context.object.type == 'CURVE'))
 
     def draw(self, context):
+        global icons_collection
+        icons = icons_collection["main"]
         layout = self.layout
         row = layout.row(align=True)
         box = row.box()
         row = box.row(align=True)
         row.operator(
             "archipack.polylib_detect",
-            icon_value=icons_coll["detect"].icon_id,
+            icon_value=icons["detect"].icon_id,
             text='Detect'
             ).extend = context.window_manager.archipack_polylib.extend
         row.prop(context.window_manager.archipack_polylib, "extend")
@@ -297,46 +299,46 @@ class TOOLS_PT_Archipack_PolyLib(Panel):
         row = box.row(align=True)
         row.operator(
             "archipack.polylib_pick_2d_polygons",
-            icon_value=icons_coll["selection"].icon_id,
+            icon_value=icons["selection"].icon_id,
             text='Select'
             ).action = 'select'
         row.operator(
             "archipack.polylib_pick_2d_polygons",
-            icon_value=icons_coll["union"].icon_id,
+            icon_value=icons["union"].icon_id,
             text='Union'
             ).action = 'union'
         row.operator(
             "archipack.polylib_output_polygons",
-            icon_value=icons_coll["polygons"].icon_id,
+            icon_value=icons["polygons"].icon_id,
             text='All')
         row = box.row(align=True)
         row.operator(
             "archipack.polylib_pick_2d_polygons",
             text='Wall',
-            icon_value=icons_coll["wall"].icon_id).action = 'wall'
+            icon_value=icons["wall"].icon_id).action = 'wall'
         row.prop(context.window_manager.archipack_polylib, "solidify_thickness")
         row = box.row(align=True)
         row.operator("archipack.polylib_pick_2d_polygons",
             text='Window',
-            icon_value=icons_coll["window"].icon_id).action = 'window'
+            icon_value=icons["window"].icon_id).action = 'window'
         row.operator("archipack.polylib_pick_2d_polygons",
             text='Door',
-            icon_value=icons_coll["door"].icon_id).action = 'door'
+            icon_value=icons["door"].icon_id).action = 'door'
         row.operator("archipack.polylib_pick_2d_polygons", text='Rectangle').action = 'rectangle'
         row = box.row(align=True)
         row.label(text="Lines")
         row = box.row(align=True)
         row.operator(
             "archipack.polylib_pick_2d_lines",
-            icon_value=icons_coll["selection"].icon_id,
+            icon_value=icons["selection"].icon_id,
             text='Lines').action = 'select'
         row.operator(
             "archipack.polylib_pick_2d_lines",
-            icon_value=icons_coll["union"].icon_id,
+            icon_value=icons["union"].icon_id,
             text='Union').action = 'union'
         row.operator(
             "archipack.polylib_output_lines",
-            icon_value=icons_coll["polygons"].icon_id,
+            icon_value=icons["polygons"].icon_id,
             text='All')
         # row = layout.row(align=True)
         # box = row.box()
@@ -347,7 +349,7 @@ class TOOLS_PT_Archipack_PolyLib(Panel):
         row = box.row(align=True)
         row.operator(
             "archipack.polylib_pick_2d_points",
-            icon_value=icons_coll["selection"].icon_id,
+            icon_value=icons["selection"].icon_id,
             text='Points').action = 'select'
         row = layout.row(align=True)
         box = row.box()
@@ -413,6 +415,8 @@ class TOOLS_PT_Archipack_Create(Panel):
         return True
 
     def draw(self, context):
+        global icons_collection
+        icons = icons_collection["main"]
         layout = self.layout
         row = layout.row(align=True)
         box = row.box()
@@ -421,7 +425,7 @@ class TOOLS_PT_Archipack_Create(Panel):
         col = row.column()
         subrow = col.row(align=True)
         subrow.operator("archipack.window",
-                    icon_value=icons_coll["window"].icon_id
+                    icon_value=icons["window"].icon_id
                     ).mode = 'CREATE'
         subrow.operator("archipack.window_draw",
                     text="",
@@ -429,44 +433,44 @@ class TOOLS_PT_Archipack_Create(Panel):
         col = row.column()
         subrow = col.row(align=True)
         subrow.operator("archipack.door",
-                    icon_value=icons_coll["door"].icon_id
+                    icon_value=icons["door"].icon_id
                     ).mode = 'CREATE'
         subrow.operator("archipack.door_draw",
                     text="",
                     icon='GREASEPENCIL')
         row = box.row(align=True)
         row.operator("archipack.stair",
-                    icon_value=icons_coll["stair"].icon_id
+                    icon_value=icons["stair"].icon_id
                     )
         row = box.row(align=True)
         row.operator("archipack.wall2",
-                    icon_value=icons_coll["wall"].icon_id
+                    icon_value=icons["wall"].icon_id
                     )
         row.operator("archipack.wall2_draw", text="Draw", icon='GREASEPENCIL')
         row.operator("archipack.wall2_from_curve", text="", icon='CURVE_DATA')
 
         row = box.row(align=True)
         row.operator("archipack.fence",
-                    icon_value=icons_coll["fence"].icon_id
+                    icon_value=icons["fence"].icon_id
                     )
         row.operator("archipack.fence_from_curve", text="", icon='CURVE_DATA')
         # row = box.row(align=True)
         # row.operator("archipack.roof", icon='CURVE_DATA')
         row = box.row(align=True)
         row.operator("archipack.truss",
-                    icon_value=icons_coll["truss"].icon_id
+                    icon_value=icons["truss"].icon_id
                     )
         row = box.row(align=True)
         # row.operator("archipack.slab")
         row.operator("archipack.slab_from_curve",
-                    icon_value=icons_coll["slab"].icon_id
+                    icon_value=icons["slab"].icon_id
                     )
 
         row = box.row(align=True)
         row.operator("archipack.wall2_from_slab",
-                    icon_value=icons_coll["wall"].icon_id)
+                    icon_value=icons["wall"].icon_id)
         row.operator("archipack.slab_from_wall",
-                    icon_value=icons_coll["slab"].icon_id
+                    icon_value=icons["slab"].icon_id
                     )
 
 
@@ -476,32 +480,34 @@ class TOOLS_PT_Archipack_Create(Panel):
 
 # Define "Archipack" menu
 def menu_func(self, context):
+    global icons_collection
+    icons = icons_collection["main"]
     layout = self.layout
     layout.separator()
     layout.operator_context = 'INVOKE_REGION_WIN'
     layout.operator("archipack.wall2",
                     text="Wall",
-                    icon_value=icons_coll["wall"].icon_id
+                    icon_value=icons["wall"].icon_id
                     )
     layout.operator("archipack.window",
                     text="Window",
-                    icon_value=icons_coll["window"].icon_id
+                    icon_value=icons["window"].icon_id
                     ).mode = 'CREATE'
     layout.operator("archipack.door",
                     text="Door",
-                    icon_value=icons_coll["door"].icon_id
+                    icon_value=icons["door"].icon_id
                     ).mode = 'CREATE'
     layout.operator("archipack.stair",
                     text="Stair",
-                    icon_value=icons_coll["stair"].icon_id
+                    icon_value=icons["stair"].icon_id
                     )
     layout.operator("archipack.fence",
                     text="Fence",
-                    icon_value=icons_coll["fence"].icon_id
+                    icon_value=icons["fence"].icon_id
                     )
     layout.operator("archipack.truss",
                     text="Truss",
-                    icon_value=icons_coll["truss"].icon_id
+                    icon_value=icons["truss"].icon_id
                     )
 
 
@@ -525,14 +531,14 @@ class archipack_data(PropertyGroup):
 
 
 def register():
-    global icons_coll
-
-    icons_coll = previews.new()
+    global icons_collection
+    icons = previews.new()
     icons_dir = os.path.join(os.path.dirname(__file__), "icons")
     for icon in os.listdir(icons_dir):
         name, ext = os.path.splitext(icon)
-        icons_coll.load(name, os.path.join(icons_dir, icon), 'IMAGE')
-
+        icons.load(name, os.path.join(icons_dir, icon), 'IMAGE')
+    icons_collection["main"] = icons
+    
     archipack_snap.register()
     archipack_manipulator.register()
     archipack_reference_point.register()
@@ -560,7 +566,7 @@ def register():
 
 
 def unregister():
-    global icons_coll
+    global icons_collection
     bpy.types.INFO_MT_mesh_add.remove(menu_func)
 
     bpy.utils.unregister_class(TOOLS_PT_Archipack_PolyLib)
@@ -589,9 +595,9 @@ def unregister():
     bpy.utils.unregister_class(archipack_data)
     del WindowManager.archipack
 
-    # icons_coll.close()
-    previews.remove(icons_coll)
-    del icons_coll
+    for icons in icons_collection.values():
+        previews.remove(icons)
+    icons_collection.clear()
     # bpy.utils.unregister_module(__name__)



More information about the Bf-extensions-cvs mailing list