From 70529875c67383939025bc03a06f19989eee2925 Mon Sep 17 00:00:00 2001 From: lijenstina Date: Fri, 5 May 2017 00:12:41 +0200 Subject: Archimesh: Update panel Rename, replace deprecated imp call Bumped version to 1.1.4 Replace the deprecated imp import with importlib As a part of the task T50726: Update the Panel rename code to more generic one Note: there is the import sys and os that should be maybe removed --- archimesh/__init__.py | 81 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 29 deletions(-) (limited to 'archimesh') diff --git a/archimesh/__init__.py b/archimesh/__init__.py index 59ef314f..e9ba3883 100644 --- a/archimesh/__init__.py +++ b/archimesh/__init__.py @@ -29,7 +29,7 @@ bl_info = { "name": "Archimesh", "author": "Antonio Vazquez (antonioya)", "location": "View3D > Add > Mesh > Archimesh", - "version": (1, 1, 3), + "version": (1, 1, 4), "blender": (2, 6, 8), "description": "Generate rooms, doors, windows, and other architecture objects", "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Add_Mesh/Archimesh", @@ -43,21 +43,21 @@ import os # Import modules # ---------------------------------------------- if "bpy" in locals(): - import imp - imp.reload(achm_room_maker) - imp.reload(achm_door_maker) - imp.reload(achm_window_maker) - imp.reload(achm_roof_maker) - imp.reload(achm_column_maker) - imp.reload(achm_stairs_maker) - imp.reload(achm_kitchen_maker) - imp.reload(achm_shelves_maker) - imp.reload(achm_books_maker) - imp.reload(achm_lamp_maker) - imp.reload(achm_curtain_maker) - imp.reload(achm_venetian_maker) - imp.reload(achm_main_panel) - imp.reload(achm_window_panel) + import importlib + importlib.reload(achm_room_maker) + importlib.reload(achm_door_maker) + importlib.reload(achm_window_maker) + importlib.reload(achm_roof_maker) + importlib.reload(achm_column_maker) + importlib.reload(achm_stairs_maker) + importlib.reload(achm_kitchen_maker) + importlib.reload(achm_shelves_maker) + importlib.reload(achm_books_maker) + importlib.reload(achm_lamp_maker) + importlib.reload(achm_curtain_maker) + importlib.reload(achm_venetian_maker) + importlib.reload(achm_main_panel) + importlib.reload(achm_window_panel) print("archimesh: Reloaded multifiles") else: from . import achm_books_maker @@ -80,9 +80,21 @@ else: # noinspection PyUnresolvedReferences import bpy # noinspection PyUnresolvedReferences -from bpy.props import BoolProperty, FloatVectorProperty, IntProperty, FloatProperty +from bpy.props import ( + BoolProperty, + FloatVectorProperty, + IntProperty, + FloatProperty, + StringProperty, + ) # noinspection PyUnresolvedReferences -from bpy.types import Menu, Scene, INFO_MT_mesh_add, WindowManager +from bpy.types import ( + AddonPreferences, + Menu, + Scene, + INFO_MT_mesh_add, + WindowManager, + ) # ---------------------------------------------------------- # Decoration assets @@ -128,24 +140,34 @@ class AchmInfoMtMeshCustomMenuAdd(Menu): # Register all operators and panels # -------------------------------------------------------------- -## Addons Preferences Update Panel -from bpy.types import ( - AddonPreferences, - ) -from bpy.props import ( - StringProperty, + +# Add-ons Preferences Update Panel + +# Define Panel classes for updating +panels = ( + achm_main_panel.ArchimeshMainPanel, ) + def update_panel(self, context): + message = "Archimesh: Updating Panel locations has failed" try: - bpy.utils.unregister_class(achm_main_panel.ArchimeshMainPanel) - except: + for panel in panels: + if "bl_rna" in panel.__dict__: + bpy.utils.unregister_class(panel) + + for panel in panels: + panel.bl_category = context.user_preferences.addons[__name__].preferences.category + bpy.utils.register_class(panel) + + except Exception as e: + print("\n[{}]\n{}\n\nError:\n{}".format(__name__, message, e)) pass - achm_main_panel.ArchimeshMainPanel.bl_category = context.user_preferences.addons[__name__].preferences.category - bpy.utils.register_class(achm_main_panel.ArchimeshMainPanel) class Archi_Pref(AddonPreferences): + # this must match the addon name, use '__package__' + # when defining this in a submodule of a python package. bl_idname = __name__ category = StringProperty( @@ -156,13 +178,14 @@ class Archi_Pref(AddonPreferences): ) def draw(self, context): - layout = self.layout + row = layout.row() col = row.column() col.label(text="Tab Category:") col.prop(self, "category", text="") + # Define menu # noinspection PyUnusedLocal def AchmMenu_func(self, context): -- cgit v1.2.3