From 800dc7e3306413effcd1b683f7eeca0d602a78cf Mon Sep 17 00:00:00 2001 From: lijenstina Date: Tue, 6 Jun 2017 21:53:03 +0200 Subject: Magic UV: Replace deprecated imp call, mode fix Bump version to 4.3.1 Replace the deprecated imp calls with importlib Imports as tuples Some minor cleanup Fix crash with MUV_TexProjProject by checking for edit mode, add a poll for active object of type Mesh Fix crash with MUV_PreserveUVAspect not having an image in the faces loop tex data in certain cases --- uv_magic_uv/__init__.py | 48 ++++++++++++++++++----------------- uv_magic_uv/muv_common.py | 5 ++-- uv_magic_uv/muv_cpuv_ops.py | 14 ++++++---- uv_magic_uv/muv_cpuv_selseq_ops.py | 16 +++++++----- uv_magic_uv/muv_fliprot_ops.py | 10 +++++--- uv_magic_uv/muv_menu.py | 5 ++-- uv_magic_uv/muv_mirroruv_ops.py | 10 +++++--- uv_magic_uv/muv_mvuv_ops.py | 5 ++-- uv_magic_uv/muv_packuv_ops.py | 11 +++++--- uv_magic_uv/muv_preferences.py | 15 ++++++----- uv_magic_uv/muv_preserve_uv_aspect.py | 17 ++++++++++--- uv_magic_uv/muv_props.py | 19 ++++++++------ uv_magic_uv/muv_texlock_ops.py | 9 ++++--- uv_magic_uv/muv_texproj_ops.py | 15 +++++++++-- uv_magic_uv/muv_transuv_ops.py | 4 +-- uv_magic_uv/muv_unwrapconst_ops.py | 11 +++++--- uv_magic_uv/muv_uvbb_ops.py | 13 +++++----- uv_magic_uv/muv_wsuv_ops.py | 5 ++-- 18 files changed, 139 insertions(+), 93 deletions(-) (limited to 'uv_magic_uv') diff --git a/uv_magic_uv/__init__.py b/uv_magic_uv/__init__.py index dd236667..01d3582a 100644 --- a/uv_magic_uv/__init__.py +++ b/uv_magic_uv/__init__.py @@ -20,43 +20,45 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" +__version__ = "4.3.1" +__date__ = "6 June 2017" bl_info = { "name": "Magic UV", - "author": "Nutti, Mifth, Jace Priester, kgeogeo, mem, Keith (Wahooney) Boshoff, McBuff, MaxRobinot", - "version": (4, 3), + "author": "Nutti, Mifth, Jace Priester, kgeogeo, mem, " + "Keith (Wahooney) Boshoff, McBuff, MaxRobinot", + "version": (4, 3, 1), "blender": (2, 77, 0), "location": "See Add-ons Preferences", "description": "UV Manipulator Tools. See Add-ons Preferences for details", "warning": "", "support": "COMMUNITY", - "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/UV/Magic_UV", + "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/" + "Py/Scripts/UV/Magic_UV", "tracker_url": "https://github.com/nutti/Magic-UV", "category": "UV" } if "bpy" in locals(): - import imp - imp.reload(muv_preferences) - imp.reload(muv_menu) - imp.reload(muv_common) - imp.reload(muv_props) - imp.reload(muv_cpuv_ops) - imp.reload(muv_cpuv_selseq_ops) - imp.reload(muv_fliprot_ops) - imp.reload(muv_transuv_ops) - imp.reload(muv_uvbb_ops) - imp.reload(muv_mvuv_ops) - imp.reload(muv_texproj_ops) - imp.reload(muv_packuv_ops) - imp.reload(muv_texlock_ops) - imp.reload(muv_mirroruv_ops) - imp.reload(muv_wsuv_ops) - imp.reload(muv_unwrapconst_ops) - imp.reload(muv_preserve_uv_aspect) + import importlib + importlib.reload(muv_preferences) + importlib.reload(muv_menu) + importlib.reload(muv_common) + importlib.reload(muv_props) + importlib.reload(muv_cpuv_ops) + importlib.reload(muv_cpuv_selseq_ops) + importlib.reload(muv_fliprot_ops) + importlib.reload(muv_transuv_ops) + importlib.reload(muv_uvbb_ops) + importlib.reload(muv_mvuv_ops) + importlib.reload(muv_texproj_ops) + importlib.reload(muv_packuv_ops) + importlib.reload(muv_texlock_ops) + importlib.reload(muv_mirroruv_ops) + importlib.reload(muv_wsuv_ops) + importlib.reload(muv_unwrapconst_ops) + importlib.reload(muv_preserve_uv_aspect) else: from . import muv_preferences from . import muv_menu diff --git a/uv_magic_uv/muv_common.py b/uv_magic_uv/muv_common.py index 66f2a54b..121915e8 100644 --- a/uv_magic_uv/muv_common.py +++ b/uv_magic_uv/muv_common.py @@ -20,9 +20,8 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" import bpy from . import muv_props diff --git a/uv_magic_uv/muv_cpuv_ops.py b/uv_magic_uv/muv_cpuv_ops.py index fbf1764f..3ef1a9de 100644 --- a/uv_magic_uv/muv_cpuv_ops.py +++ b/uv_magic_uv/muv_cpuv_ops.py @@ -20,13 +20,17 @@ __author__ = "Nutti , Jace Priester" __status__ = "production" -__version__ = "4.3" +__version__ = "4.3.1" __date__ = "1 Apr 2017" - import bpy import bmesh -from bpy.props import StringProperty, BoolProperty, IntProperty, EnumProperty +from bpy.props import ( + StringProperty, + BoolProperty, + IntProperty, + EnumProperty, + ) from . import muv_common @@ -399,8 +403,8 @@ class MUV_CPUVObjPasteUV(bpy.types.Operator): if len(props.src_uvs) != len(dest_uvs): self.report( {'WARNING'}, - "Number of faces is different from copied " - + "(src:%d, dest:%d)" + "Number of faces is different from copied " + + "(src:%d, dest:%d)" % (len(props.src_uvs), len(dest_uvs)) ) return {'CANCELLED'} diff --git a/uv_magic_uv/muv_cpuv_selseq_ops.py b/uv_magic_uv/muv_cpuv_selseq_ops.py index 37e9f8de..bbb9de5a 100644 --- a/uv_magic_uv/muv_cpuv_selseq_ops.py +++ b/uv_magic_uv/muv_cpuv_selseq_ops.py @@ -20,13 +20,17 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" import bpy import bmesh -from bpy.props import StringProperty, BoolProperty, IntProperty, EnumProperty +from bpy.props import ( + StringProperty, + BoolProperty, + IntProperty, + EnumProperty, + ) from . import muv_common @@ -180,8 +184,8 @@ class MUV_CPUVSelSeqPasteUV(bpy.types.Operator): if self.strategy == 'N_N' and len(props.src_uvs) != len(dest_uvs): self.report( {'WARNING'}, - "Number of selected faces is different from copied faces " - + "(src:%d, dest:%d)" + "Number of selected faces is different from copied faces " + + "(src:%d, dest:%d)" % (len(props.src_uvs), len(dest_uvs))) return {'CANCELLED'} diff --git a/uv_magic_uv/muv_fliprot_ops.py b/uv_magic_uv/muv_fliprot_ops.py index 597ee2a6..2c72d643 100644 --- a/uv_magic_uv/muv_fliprot_ops.py +++ b/uv_magic_uv/muv_fliprot_ops.py @@ -20,13 +20,15 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" import bpy import bmesh -from bpy.props import BoolProperty, IntProperty +from bpy.props import ( + BoolProperty, + IntProperty, + ) from . import muv_common diff --git a/uv_magic_uv/muv_menu.py b/uv_magic_uv/muv_menu.py index fd4ef205..b177e9c8 100644 --- a/uv_magic_uv/muv_menu.py +++ b/uv_magic_uv/muv_menu.py @@ -20,9 +20,8 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" import bpy from . import muv_cpuv_ops diff --git a/uv_magic_uv/muv_mirroruv_ops.py b/uv_magic_uv/muv_mirroruv_ops.py index d0a98b87..5fc2ac4c 100644 --- a/uv_magic_uv/muv_mirroruv_ops.py +++ b/uv_magic_uv/muv_mirroruv_ops.py @@ -20,12 +20,14 @@ __author__ = "Keith (Wahooney) Boshoff, Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" import bpy -from bpy.props import EnumProperty, FloatProperty +from bpy.props import ( + EnumProperty, + FloatProperty, + ) import bmesh from mathutils import Vector from . import muv_common diff --git a/uv_magic_uv/muv_mvuv_ops.py b/uv_magic_uv/muv_mvuv_ops.py index 2eb0991f..192d7f21 100644 --- a/uv_magic_uv/muv_mvuv_ops.py +++ b/uv_magic_uv/muv_mvuv_ops.py @@ -20,9 +20,8 @@ __author__ = "kgeogeo, mem, Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" import bpy import bmesh diff --git a/uv_magic_uv/muv_packuv_ops.py b/uv_magic_uv/muv_packuv_ops.py index 06e79e7a..829bf605 100644 --- a/uv_magic_uv/muv_packuv_ops.py +++ b/uv_magic_uv/muv_packuv_ops.py @@ -20,9 +20,8 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" from math import fabs from collections import defaultdict @@ -30,7 +29,11 @@ from collections import defaultdict import bpy import bmesh import mathutils -from bpy.props import FloatProperty, FloatVectorProperty, BoolProperty +from bpy.props import ( + FloatProperty, + FloatVectorProperty, + BoolProperty, + ) from mathutils import Vector from . import muv_common diff --git a/uv_magic_uv/muv_preferences.py b/uv_magic_uv/muv_preferences.py index 7e13c6ea..f80ad28e 100644 --- a/uv_magic_uv/muv_preferences.py +++ b/uv_magic_uv/muv_preferences.py @@ -20,11 +20,14 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - - -from bpy.props import BoolProperty, FloatProperty, FloatVectorProperty +__version__ = "4.3.1" +__date__ = "6 June 2017" + +from bpy.props import ( + BoolProperty, + FloatProperty, + FloatVectorProperty, + ) from bpy.types import AddonPreferences @@ -44,7 +47,7 @@ class MUV_Preferences(AddonPreferences): # for Texture Projection texproj_canvas_padding = FloatVectorProperty( name="Canvas Padding", - description="Canvas Padding.", + description="Canvas Padding", size=2, max=50.0, min=0.0, diff --git a/uv_magic_uv/muv_preserve_uv_aspect.py b/uv_magic_uv/muv_preserve_uv_aspect.py index 0fbb820d..bc9ce3eb 100644 --- a/uv_magic_uv/muv_preserve_uv_aspect.py +++ b/uv_magic_uv/muv_preserve_uv_aspect.py @@ -20,9 +20,8 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" import bpy import bmesh @@ -38,6 +37,7 @@ class MUV_PreserveUVAspect(bpy.types.Operator): bl_idname = "uv.muv_preserve_uv_aspect" bl_label = "Preserve UV Aspect" + bl_description = "Choose Image" bl_options = {'REGISTER', 'UNDO'} dest_img_name = StringProperty(options={'HIDDEN'}) @@ -48,6 +48,9 @@ class MUV_PreserveUVAspect(bpy.types.Operator): return obj and obj.type == 'MESH' def execute(self, context): + # Note: the current system only works if the + # f[tex_layer].image doesn't return None + # which will happen in certain cases obj = context.active_object bm = bmesh.from_edit_mesh(obj.data) @@ -57,6 +60,7 @@ class MUV_PreserveUVAspect(bpy.types.Operator): if not bm.loops.layers.uv: self.report({'WARNING'}, "Object must have more than one UV map") return {'CANCELLED'} + uv_layer = bm.loops.layers.uv.verify() tex_layer = bm.faces.layers.tex.verify() @@ -72,6 +76,9 @@ class MUV_PreserveUVAspect(bpy.types.Operator): info[f[tex_layer].image]['faces'].append(f) for img in info: + if img is None: + continue + src_img = img ratio = Vector(( dest_img.size[0] / src_img.size[0], @@ -86,6 +93,9 @@ class MUV_PreserveUVAspect(bpy.types.Operator): info[img]['origin'] = origin for img in info: + if img is None: + continue + for f in info[img]['faces']: f[tex_layer].image = dest_img for l in f.loops: @@ -112,6 +122,7 @@ class MUV_PreserveUVAspectMenu(bpy.types.Menu): def draw(self, _): layout = self.layout + # create sub menu for key in bpy.data.images.keys(): layout.operator( diff --git a/uv_magic_uv/muv_props.py b/uv_magic_uv/muv_props.py index 10e14614..3fdbdf00 100644 --- a/uv_magic_uv/muv_props.py +++ b/uv_magic_uv/muv_props.py @@ -20,12 +20,15 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" import bpy -from bpy.props import FloatProperty, EnumProperty, BoolProperty +from bpy.props import ( + FloatProperty, + EnumProperty, + BoolProperty, + ) DEBUG = False @@ -109,13 +112,13 @@ def init_props(scene): default=False) scene.muv_texproj_tex_magnitude = FloatProperty( name="Magnitude", - description="Texture Magnitude.", + description="Texture Magnitude", default=0.5, min=0.0, max=100.0) scene.muv_texproj_tex_image = EnumProperty( name="Image", - description="Texture Image.", + description="Texture Image", items=get_loaded_texture_name) scene.muv_texproj_tex_transparency = FloatProperty( name="Transparency", @@ -125,11 +128,11 @@ def init_props(scene): max=1.0) scene.muv_texproj_adjust_window = BoolProperty( name="Adjust Window", - description="Size of renderered texture is fitted to window.", + description="Size of renderered texture is fitted to window", default=True) scene.muv_texproj_apply_tex_aspect = BoolProperty( name="Texture Aspect Ratio", - description="Apply Texture Aspect ratio to displayed texture.", + description="Apply Texture Aspect ratio to displayed texture", default=True) diff --git a/uv_magic_uv/muv_texlock_ops.py b/uv_magic_uv/muv_texlock_ops.py index a3ddda2b..f3ff499e 100644 --- a/uv_magic_uv/muv_texlock_ops.py +++ b/uv_magic_uv/muv_texlock_ops.py @@ -20,11 +20,14 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" +__version__ = "4.3.1" +__date__ = "6 June 2017" import math -from math import atan2, cos, sqrt, sin, fabs +from math import ( + atan2, cos, + sqrt, sin, fabs, + ) import bpy import bmesh diff --git a/uv_magic_uv/muv_texproj_ops.py b/uv_magic_uv/muv_texproj_ops.py index 08b1d919..7b796e81 100644 --- a/uv_magic_uv/muv_texproj_ops.py +++ b/uv_magic_uv/muv_texproj_ops.py @@ -20,8 +20,8 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" +__version__ = "4.3.1" +__date__ = "6 June 2017" from collections import namedtuple @@ -229,12 +229,22 @@ class MUV_TexProjProject(bpy.types.Operator): bl_description = "Project Texture" bl_options = {'REGISTER', 'UNDO'} + @classmethod + def poll(cls, context): + obj = context.active_object + return obj is not None and obj.type == "MESH" + def execute(self, context): sc = context.scene + if context.mode != "EDIT_MESH": + self.report({'WARNING'}, "Mesh must be in Edit mode") + return {'CANCELLED'} + if sc.muv_texproj_tex_image == "None": self.report({'WARNING'}, "No textures are selected") return {'CANCELLED'} + _, region, space = muv_common.get_space( 'VIEW_3D', 'WINDOW', 'VIEW_3D') @@ -249,6 +259,7 @@ class MUV_TexProjProject(bpy.types.Operator): if not bm.loops.layers.uv: self.report({'WARNING'}, "Object must have more than one UV map") return {'CANCELLED'} + uv_layer = bm.loops.layers.uv.verify() tex_layer = bm.faces.layers.tex.verify() diff --git a/uv_magic_uv/muv_transuv_ops.py b/uv_magic_uv/muv_transuv_ops.py index e1083edc..095fa99b 100644 --- a/uv_magic_uv/muv_transuv_ops.py +++ b/uv_magic_uv/muv_transuv_ops.py @@ -20,8 +20,8 @@ __author__ = "Nutti , Mifth, MaxRobinot" __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" +__version__ = "4.3.1" +__date__ = "6 June 2017" from collections import OrderedDict diff --git a/uv_magic_uv/muv_unwrapconst_ops.py b/uv_magic_uv/muv_unwrapconst_ops.py index d18634cd..86686090 100644 --- a/uv_magic_uv/muv_unwrapconst_ops.py +++ b/uv_magic_uv/muv_unwrapconst_ops.py @@ -18,13 +18,16 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" import bpy import bmesh -from bpy.props import BoolProperty, EnumProperty, FloatProperty +from bpy.props import ( + BoolProperty, + EnumProperty, + FloatProperty, + ) from . import muv_common diff --git a/uv_magic_uv/muv_uvbb_ops.py b/uv_magic_uv/muv_uvbb_ops.py index c596b1d1..3e773b7a 100644 --- a/uv_magic_uv/muv_uvbb_ops.py +++ b/uv_magic_uv/muv_uvbb_ops.py @@ -20,9 +20,8 @@ __author__ = "Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" from enum import IntEnum import math @@ -415,8 +414,8 @@ class MUV_UVBBStateNone(MUV_UVBBStateBase): arr = [1, 3, 6, 8] if i in arr: return ( - MUV_UVBBState.UNIFORM_SCALING_1 - + arr.index(i) + MUV_UVBBState.UNIFORM_SCALING_1 + + arr.index(i) ) else: return MUV_UVBBState.TRANSLATING + i @@ -552,8 +551,8 @@ class MUV_UVBBStateMgr(): obj = MUV_UVBBStateRotating(self.__cmd_exec, ctrl_points) elif next_state == MUV_UVBBState.NONE: obj = MUV_UVBBStateNone(self.__cmd_exec) - elif (MUV_UVBBState.UNIFORM_SCALING_1 <= next_state - <= MUV_UVBBState.UNIFORM_SCALING_4): + elif (MUV_UVBBState.UNIFORM_SCALING_1 <= next_state <= + MUV_UVBBState.UNIFORM_SCALING_4): obj = MUV_UVBBStateUniformScaling( self.__cmd_exec, next_state, ctrl_points) diff --git a/uv_magic_uv/muv_wsuv_ops.py b/uv_magic_uv/muv_wsuv_ops.py index dce56447..debc666c 100644 --- a/uv_magic_uv/muv_wsuv_ops.py +++ b/uv_magic_uv/muv_wsuv_ops.py @@ -20,9 +20,8 @@ __author__ = "McBuff, Nutti " __status__ = "production" -__version__ = "4.3" -__date__ = "1 Apr 2017" - +__version__ = "4.3.1" +__date__ = "6 June 2017" import bpy import bmesh -- cgit v1.2.3