[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4004] contrib/py/scripts/addons/ space_view3d_paint_bprojection.py: Fix for keymap when addon is active and you create new file or reload factory .

geo kgeo kgeogeo at hotmail.com
Mon Nov 26 01:10:42 CET 2012


Revision: 4004
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4004
Author:   kgeogeo
Date:     2012-11-26 00:10:37 +0000 (Mon, 26 Nov 2012)
Log Message:
-----------
Fix for keymap when addon is active and you create new file or reload factory. It's not perfect but don't know exactly yet how make better

Modified Paths:
--------------
    contrib/py/scripts/addons/space_view3d_paint_bprojection.py

Modified: contrib/py/scripts/addons/space_view3d_paint_bprojection.py
===================================================================
--- contrib/py/scripts/addons/space_view3d_paint_bprojection.py	2012-11-25 12:58:35 UTC (rev 4003)
+++ contrib/py/scripts/addons/space_view3d_paint_bprojection.py	2012-11-26 00:10:37 UTC (rev 4004)
@@ -897,33 +897,8 @@
             context.scene.objects.active = ob
             ob.select = True
             
-            km = bpy.data.window_managers['WinMan'].keyconfigs['Blender'].keymaps['3D View']
-            # ----------------------------------------------
-            # XXX, this isnt future proof, DON'T USE INDEX's - campbell
-            km.keymap_items[3-1].idname = 'view3d.rotate'
-            km.keymap_items[21-1].idname = 'view3d.zoom'
-            km.keymap_items[21-1].properties.delta = 1.0
-            km.keymap_items[22-1].idname = 'view3d.zoom'
-            km.keymap_items[22-1].properties.delta = -1.0
-            km.keymap_items[4-1].idname = 'view3d.move'
-            km.keymap_items[29-1].idname = 'view3d.viewnumpad'
-            km.keymap_items[29-1].properties.type = 'FRONT'
-            km.keymap_items[31-1].idname = 'view3d.viewnumpad'
-            km.keymap_items[31-1].properties.type = 'RIGHT'            
-            km.keymap_items[35-1].idname = 'view3d.viewnumpad'
-            km.keymap_items[35-1].properties.type = 'TOP'
-            km.keymap_items[37-1].idname = 'view3d.viewnumpad'
-            km.keymap_items[37-1].properties.type = 'BACK'
-            km.keymap_items[38-1].idname = 'view3d.viewnumpad'
-            km.keymap_items[38-1].properties.type = 'LEFT'            
-            km.keymap_items[39-1].idname = 'view3d.viewnumpad'
-            km.keymap_items[39-1].properties.type = 'BOTTOM'            
-            
-            km = context.window_manager.keyconfigs.default.keymaps['Image Paint']
-            #to do
-            for kmi in (kmi for kmi in km.keymap_items if kmi.idname in {"object.intuitivescale", }):
-                    km.keymap_items.remove(kmi)
-            
+            reinitkey()
+                        
             '''tmp = context.object
             for ob in (ob for ob in bpy.data.objects if ob.type == 'MESH' and ob.hide == False and context.scene in ob.users_scene):
                 context.scene.objects.active = ob
@@ -945,6 +920,34 @@
         
         return {'FINISHED'}
 
+def reinitkey():
+    km = bpy.data.window_managers['WinMan'].keyconfigs['Blender'].keymaps['3D View']
+    # ----------------------------------------------
+    # XXX, this isnt future proof, DON'T USE INDEX's - campbell
+    km.keymap_items[3-1].idname = 'view3d.rotate'
+    km.keymap_items[21-1].idname = 'view3d.zoom'
+    km.keymap_items[21-1].properties.delta = 1.0
+    km.keymap_items[22-1].idname = 'view3d.zoom'
+    km.keymap_items[22-1].properties.delta = -1.0
+    km.keymap_items[4-1].idname = 'view3d.move'
+    km.keymap_items[29-1].idname = 'view3d.viewnumpad'
+    km.keymap_items[29-1].properties.type = 'FRONT'
+    km.keymap_items[31-1].idname = 'view3d.viewnumpad'
+    km.keymap_items[31-1].properties.type = 'RIGHT'            
+    km.keymap_items[35-1].idname = 'view3d.viewnumpad'
+    km.keymap_items[35-1].properties.type = 'TOP'
+    km.keymap_items[37-1].idname = 'view3d.viewnumpad'
+    km.keymap_items[37-1].properties.type = 'BACK'
+    km.keymap_items[38-1].idname = 'view3d.viewnumpad'
+    km.keymap_items[38-1].properties.type = 'LEFT'            
+    km.keymap_items[39-1].idname = 'view3d.viewnumpad'
+    km.keymap_items[39-1].properties.type = 'BOTTOM'            
+            
+    km = bpy.context.window_manager.keyconfigs.default.keymaps['Image Paint']
+    #to do
+    for kmi in (kmi for kmi in km.keymap_items if kmi.idname in {"object.intuitivescale", }):
+            km.keymap_items.remove(kmi)
+
 # Oprerator Class to remove what is no more needed    
 class ChangeObject(Operator):
     bl_idname = "object.change_object"
@@ -1220,14 +1223,20 @@
         return{'FINISHED'}
 
     def invoke(self, context, event):
-        context.window_manager.modal_handler_add(self)
-        self.first_mouse = Vector((event.mouse_region_x,event.mouse_region_y))
-        self.first_time = True
-        for sub in context.object.modifiers:
-            if sub.type in ['SUBSURF', 'MULTIRES']:
-                self.tmp_level = sub.levels
-                sub.levels = 0
-        return {'RUNNING_MODAL'}
+        try:
+            bpy.data.objects['Empty for BProjection']
+            context.window_manager.modal_handler_add(self)
+            self.first_mouse = Vector((event.mouse_region_x,event.mouse_region_y))
+            self.first_time = True
+            for sub in context.object.modifiers:
+                if sub.type in ['SUBSURF', 'MULTIRES']:
+                    self.tmp_level = sub.levels
+                    sub.levels = 0
+            return {'RUNNING_MODAL'}
+        except:
+            reinitkey()
+            return {'RUNNING_MODAL'}
+            
 
 # Oprerator Class to pan the view3D
 class PanView3D(bpy.types.Operator):
@@ -1275,16 +1284,20 @@
         return {'RUNNING_MODAL'}
                 
     def invoke(self, context, event):
-        context.window_manager.modal_handler_add(self)
-        self.first_mouse.x = event.mouse_region_x
-        self.first_mouse.y = event.mouse_region_y   
-        for sub in context.object.modifiers:
-            if sub.type in ['SUBSURF', 'MULTIRES']:
-                self.tmp_level = sub.levels
-                sub.levels = 0  
-                      
-        return {'RUNNING_MODAL'}
-
+        try:
+            bpy.data.objects['Empty for BProjection']    
+            context.window_manager.modal_handler_add(self)
+            self.first_mouse.x = event.mouse_region_x
+            self.first_mouse.y = event.mouse_region_y   
+            for sub in context.object.modifiers:
+                if sub.type in ['SUBSURF', 'MULTIRES']:
+                    self.tmp_level = sub.levels
+                    sub.levels = 0  
+                          
+            return {'RUNNING_MODAL'}
+        except:
+            reinitkey()
+            return {'RUNNING_MODAL'}
     def execute(self, context):        
         align_to_view(context)  
         
@@ -1302,43 +1315,47 @@
         default=1.0)
 
     def invoke(self, context, event):                   
-        ob = context.object
-        em = bpy.data.objects[BProjection_Empty]
-        sd = context.space_data
+        try:
+            ob = context.object
+            em = bpy.data.objects[BProjection_Empty]
+            sd = context.space_data
+    
+            width = context.area.regions[4].width
+            height = context.area.regions[4].height              
+                        
+            r3d =  sd.region_3d
+            v_init = Vector((0.0,0.0,1.0))
+    
+            pos = [width,height]
+            vtr_b = view3d_utils.region_2d_to_location_3d(context.region, r3d, pos, v_init)
+            pos = [0,0]
+            vbl_b = view3d_utils.region_2d_to_location_3d(context.region, r3d, pos, v_init)
+            len_b = vtr_b - vbl_b
+           
+            bpy.ops.view3d.zoom(delta = self.delta)
+            r3d.update()
+    
+            pos = [width,height]
+            vtr_a = view3d_utils.region_2d_to_location_3d(context.region, r3d, pos, v_init)
+            pos = [0,0]
+            vbl_a = view3d_utils.region_2d_to_location_3d(context.region, r3d, pos, v_init) 
+            len_a = vtr_a - vbl_a
+            
+            fac = len_a.length/len_b.length
+            r3d.view_location -= ob.location
+            r3d.view_location *= fac
+            r3d.view_location += ob.location
+            vres = Vector((em.custom_location.x*fac,em.custom_location.y*fac,em.custom_location.z))
+            em.custom_location = vres
+            
+            
+            align_to_view(context)
+            
+            return {'FINISHED'}
+        except:
+            reinitkey()
+            return {'RUNNING_MODAL'}
 
-        width = context.area.regions[4].width
-        height = context.area.regions[4].height              
-                    
-        r3d =  sd.region_3d
-        v_init = Vector((0.0,0.0,1.0))
-
-        pos = [width,height]
-        vtr_b = view3d_utils.region_2d_to_location_3d(context.region, r3d, pos, v_init)
-        pos = [0,0]
-        vbl_b = view3d_utils.region_2d_to_location_3d(context.region, r3d, pos, v_init)
-        len_b = vtr_b - vbl_b
-       
-        bpy.ops.view3d.zoom(delta = self.delta)
-        r3d.update()
-
-        pos = [width,height]
-        vtr_a = view3d_utils.region_2d_to_location_3d(context.region, r3d, pos, v_init)
-        pos = [0,0]
-        vbl_a = view3d_utils.region_2d_to_location_3d(context.region, r3d, pos, v_init) 
-        len_a = vtr_a - vbl_a
-        
-        fac = len_a.length/len_b.length
-        r3d.view_location -= ob.location
-        r3d.view_location *= fac
-        r3d.view_location += ob.location
-        vres = Vector((em.custom_location.x*fac,em.custom_location.y*fac,em.custom_location.z))
-        em.custom_location = vres
-        
-        
-        align_to_view(context)
-        
-        return {'FINISHED'}
-
     def execute(self, context):        
         align_to_view(context)
         
@@ -1351,28 +1368,32 @@
 
     view = StringProperty(name="View", description="Select the view", default='TOP')
     def invoke(self, context, event):                   
-        ob = context.object
-        em = bpy.data.objects[BProjection_Empty]
-        origine = ob.location
-        sd = context.space_data
+        try:
+            ob = context.object
+            em = bpy.data.objects[BProjection_Empty]
+            origine = ob.location
+            sd = context.space_data
+    
+            vr_b = sd.region_3d.view_rotation.copy()
+            vr_b.invert()
+            pos_init = sd.region_3d.view_location - origine
+            sd.region_3d.view_location = origine
+    
+            tmp = context.user_preferences.view.smooth_view
+            context.user_preferences.view.smooth_view = 0
+            bpy.ops.view3d.viewnumpad(type=self.view)
+            align_to_view(context)        
+            context.user_preferences.view.smooth_view = tmp
+    
+            vr_a = sd.region_3d.view_rotation.copy()                           
+            pos_init.rotate(vr_a*vr_b)            

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list