[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4746] contrib/py/scripts/addons/ presets/keyconfig/blender_2012_experimental.py: Experimental keymap, bunch of changes/additions:

Nathan Vegdahl cessen at cessen.com
Tue Sep 10 05:53:06 CEST 2013


Revision: 4746
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4746
Author:   cessen
Date:     2013-09-10 03:53:05 +0000 (Tue, 10 Sep 2013)
Log Message:
-----------
Experimental keymap, bunch of changes/additions:

- Keyframing is now on "K" instead of "I".  This is incomplete, however,
  as it seems "I" is hard-coded for button views (e.g. properties panel,
  etc.).  Need to fix that at some point.

- Keymap for timeline.

- WIP (but mostly done) keymap for nodes.

- WIP keymap for armatures

- Made the translate/rotate/scale hotkeys switch between the
  translate/rotate/scale manipulators if transform manipulators
  are on.  They still behave normally when transform manipulators
  are off.  This may be a terrible idea, but I think it's worth
  trying.  The rationale is that hopefully most users prefer either
  the hotkey OR the manipulator approach to transforms, but not both
  mixed.  That may very well be a wrong assumption, in which case
  we'll need to do something else.  But if it is a right assumption,
  then this provides a really fast way for manipulator users to switch
  between the manipulator types.

- Misc improvements/tweaks to mesh edit hotkeys.

- 'V' is now the hotkey for zoom-border.  Super useful function, and IMO
  deserves prime real-estate.  Loosely related operators "Clip Border"
  and "Render Border" are alt-V and shift-V, respectively.

Modified Paths:
--------------
    contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py

Modified: contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py
===================================================================
--- contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py	2013-09-10 00:08:57 UTC (rev 4745)
+++ contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py	2013-09-10 03:53:05 UTC (rev 4746)
@@ -1,15 +1,18 @@
 """ An experimental new keymap for Blender.
     Work in progress!
 """
+
+# TODO:
+# - N-panel etc. appear to have hard-coded 'I' as "insert key" key.  Make that
+#   user-configurable.
+
 import bpy
 
 ######################
 # Misc configuration
 ######################
 DEVELOPER_HOTKEYS = False  # Weird hotkeys that only developers use
-MAYA_STYLE_MANIPULATORS = False  # Maya-style "QWER" hotkeys for manipulators
-SUBSURF_RELATIVE = True  # Make subsurf hotkeys work by relative
-                         # shifting instead of absolute setting
+
 # Left mouse-button select
 bpy.context.user_preferences.inputs.select_mouse = 'LEFT'
 
@@ -21,7 +24,10 @@
 # Specials Menu Key
 SPECIALS_MENU_KEY = 'Q'
 
+# Keyframe setting key
+KEYFRAME_KEY = 'K'
 
+
 ################################
 # Helper functions and classes
 ################################
@@ -58,6 +64,54 @@
 bpy.utils.register_class(SetManipulator)
 
 
+class ContextualTranslate(bpy.types.Operator):
+    """ Either translates, or sets the manipulator type to translate,
+        depending on whether the manipulator is on or not.
+    """
+    bl_idname = "view3d.contextual_translate"
+    bl_label = "Contextual Translate"
+
+    def execute(self, context):
+        if context.space_data.show_manipulator:
+            context.space_data.transform_manipulators = {'TRANSLATE'}
+        else:
+            bpy.ops.transform.translate('INVOKE_DEFAULT')
+        return {'FINISHED'}
+bpy.utils.register_class(ContextualTranslate)
+
+
+class ContextualRotate(bpy.types.Operator):
+    """ Either rotates, or sets the manipulator type to rotate,
+        depending on whether the manipulator is on or not.
+    """
+    bl_idname = "view3d.contextual_rotate"
+    bl_label = "Contextual Rotate"
+
+    def execute(self, context):
+        if context.space_data.show_manipulator:
+            context.space_data.transform_manipulators = {'ROTATE'}
+        else:
+            bpy.ops.transform.rotate('INVOKE_DEFAULT')
+        return {'FINISHED'}
+bpy.utils.register_class(ContextualRotate)
+
+
+class ContextualScale(bpy.types.Operator):
+    """ Either scales, or sets the manipulator type to scale,
+        depending on whether the manipulator is on or not.
+    """
+    bl_idname = "view3d.contextual_scale"
+    bl_label = "Contextual Scale"
+
+    def execute(self, context):
+        if context.space_data.show_manipulator:
+            context.space_data.transform_manipulators = {'SCALE'}
+        else:
+            bpy.ops.transform.resize('INVOKE_DEFAULT')
+        return {'FINISHED'}
+bpy.utils.register_class(ContextualScale)
+
+
 class ModeSwitchMenu(bpy.types.Menu):
     """ A menu for switching between object modes.
     """
@@ -70,13 +124,6 @@
 bpy.utils.register_class(ModeSwitchMenu)
 
 
-# Temporary work around: Blender does not properly limit the mode switch menu
-# items until the first mode switch (e.g. mesh objects will show pose mode as
-# an option).
-# TODO: file a bug report for this behavior.
-bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
-
-
 class TweakSelect3dview(bpy.types.Operator):
     """ Selects and translates an element in the scene.
     """
@@ -89,9 +136,10 @@
         return True
     
     def invoke(self, context, event):
-        #bpy.ops.view3d.select(context, event)
-        bpy.ops.transform.translate.invoke(context, event)
-        return {'FINISHED'}
+        result = bpy.ops.view3d.select('INVOKE_DEFAULT')
+        if 'FINISHED' in result:
+            bpy.ops.transform.translate('INVOKE_DEFAULT')
+        return result
 bpy.utils.register_class(TweakSelect3dview)
 
 
@@ -103,7 +151,7 @@
     
     @classmethod
     def poll(cls, context):
-        return context.active_object is not None
+        return len(context.selected_objects) > 0
 
     def execute(self, context):
         bpy.ops.object.delete()
@@ -166,7 +214,8 @@
 
 
 class SetEditMeshSelectMode(bpy.types.Operator):
-    """Set edit mesh select mode (vert, edge, face)"""
+    """ Set edit mesh select mode (vert, edge, face).
+    """
     bl_idname = "view3d.set_edit_mesh_select_mode"
     bl_label = "Set Edit Mesh Select Mode"
     mode = bpy.props.EnumProperty(items=[("VERT", "Vertex", ""),
@@ -260,6 +309,31 @@
 bpy.utils.register_class(MeshDissolveContextual)
 
 
+class MeshMergeContextual(bpy.types.Operator):
+    """ Merges mesh elements, doing it in a way based on the current
+        selection mode.
+    """
+    bl_idname = "mesh.merge_contextual"
+    bl_label = "Mesh Merge Contextual"
+    bl_options = {'UNDO'}
+    
+    @classmethod
+    def poll(cls, context):
+        return (context.active_object is not None) and (context.mode == "EDIT_MESH")
+    
+    def execute(self, context):
+        select_mode = context.tool_settings.mesh_select_mode
+        if select_mode[0]:
+            bpy.ops.mesh.merge()
+        else:
+            bpy.ops.mesh.edge_collapse()
+        return {'FINISHED'}
+bpy.utils.register_class(MeshMergeContextual)
+
+
+#kmi = km.keymap_items.new('mesh.edge_collapse', 'M', 'CLICK')
+#kmi = km.keymap_items.new('mesh.merge', 'M', 'PRESS', alt=True)
+
 ###########
 # Keymaps
 ###########
@@ -497,6 +571,7 @@
     kmi.properties.fast = True
 
     # Misc
+    # TODO: find good replacements for the F# keys
     kmi = km.keymap_items.new('wm.window_fullscreen_toggle', 'F11', 'CLICK', alt=True)
 
     # Development/debugging
@@ -507,7 +582,7 @@
     # ???
     kmi = km.keymap_items.new('info.reports_display_update', 'TIMER', 'ANY', any=True)
 
-
+# TODO: find good replacements for the F# keys
 def MapAdd_Screen(kc):
     """ Screen Map
     """
@@ -518,17 +593,19 @@
     kmi.properties.delta = 1
     kmi = km.keymap_items.new('screen.screen_set', 'LEFT_ARROW', 'PRESS', ctrl=True)
     kmi.properties.delta = -1
+    
+    # TODO: figure out a better hotkey for this
     kmi = km.keymap_items.new('screen.screen_full_area', 'UP_ARROW', 'PRESS', ctrl=True)
     kmi = km.keymap_items.new('screen.screen_full_area', 'DOWN_ARROW', 'PRESS', ctrl=True)
-    kmi = km.keymap_items.new('screen.screen_full_area', 'SPACE', 'PRESS', shift=True)
-    kmi = km.keymap_items.new('screen.screenshot', 'F3', 'PRESS', ctrl=True)
-    kmi = km.keymap_items.new('screen.screencast', 'F3', 'PRESS', alt=True)
-    kmi = km.keymap_items.new('screen.region_quadview', 'Q', 'PRESS', ctrl=True, alt=True)
-    kmi = km.keymap_items.new('screen.repeat_history', 'F3', 'PRESS')
-    kmi = km.keymap_items.new('screen.repeat_last', 'R', 'PRESS', shift=True)
-    kmi = km.keymap_items.new('screen.region_flip', 'F5', 'PRESS')
-    kmi = km.keymap_items.new('screen.redo_last', 'F6', 'PRESS')
-    kmi = km.keymap_items.new('script.reload', 'F8', 'PRESS')
+    
+    #kmi = km.keymap_items.new('screen.screenshot', 'F3', 'PRESS', ctrl=True)
+    #kmi = km.keymap_items.new('screen.screencast', 'F3', 'PRESS', alt=True)
+    #kmi = km.keymap_items.new('screen.region_quadview', 'Q', 'PRESS', ctrl=True, alt=True)
+    #kmi = km.keymap_items.new('screen.repeat_history', 'F3', 'PRESS')
+    #kmi = km.keymap_items.new('screen.repeat_last', 'R', 'PRESS', shift=True)
+    #kmi = km.keymap_items.new('screen.region_flip', 'F5', 'PRESS')
+    #kmi = km.keymap_items.new('screen.redo_last', 'F6', 'PRESS')
+    #kmi = km.keymap_items.new('script.reload', 'F8', 'PRESS')
     kmi = km.keymap_items.new('file.execute', 'RET', 'PRESS')
     kmi = km.keymap_items.new('file.execute', 'NUMPAD_ENTER', 'PRESS')
     kmi = km.keymap_items.new('file.cancel', 'ESC', 'PRESS')
@@ -537,7 +614,7 @@
     kmi = km.keymap_items.new('ed.undo_history', 'Z', 'PRESS', ctrl=True, alt=True)
     kmi = km.keymap_items.new('render.render', 'F12', 'PRESS')
     kmi = km.keymap_items.new('render.render', 'F12', 'PRESS', ctrl=True)
-    kmi.properties.animation = True
+    #kmi.properties.animation = True
     kmi = km.keymap_items.new('render.view_cancel', 'ESC', 'PRESS')
     kmi = km.keymap_items.new('render.view_show', 'F11', 'PRESS')
     kmi = km.keymap_items.new('render.play_rendered_anim', 'F11', 'PRESS', ctrl=True)
@@ -631,8 +708,6 @@
     kmi = km.keymap_items.new('view3d.rotate', 'MOUSEROTATE', 'ANY')
     kmi = km.keymap_items.new('view3d.smoothview', 'TIMER1', 'ANY', any=True)
 
-    
-
     # Basics with mouse
     kmi = km.keymap_items.new('view3d.rotate', 'MIDDLEMOUSE', 'PRESS')
     kmi = km.keymap_items.new('view3d.move', 'MIDDLEMOUSE', 'PRESS', shift=True)
@@ -778,13 +853,16 @@
     #kmi = km.keymap_items.new('view3d.fly', 'F', 'CLICK', shift=True)
 
     # Misc
+    # TODO: This needs a good go-over.  Try to pair this down to the
+    # fewest useful ones. And try to find non-numpad hotkey alternatives
+    # to have in addition for ones that use numpad hotkeys.
     kmi = km.keymap_items.new('view3d.view_selected', 'NUMPAD_PERIOD', 'CLICK')
     kmi = km.keymap_items.new('view3d.view_center_cursor', 'NUMPAD_PERIOD', 'CLICK', ctrl=True)
     kmi = km.keymap_items.new('view3d.zoom_camera_1_to_1', 'NUMPAD_ENTER', 'CLICK', shift=True)
-    kmi = km.keymap_items.new('view3d.view_center_camera', 'HOME', 'CLICK')
+    #kmi = km.keymap_items.new('view3d.view_center_camera', 'HOME', 'CLICK')
     kmi = km.keymap_items.new('view3d.view_all', 'HOME', 'CLICK')
     kmi.properties.center = False
-    kmi = km.keymap_items.new('view3d.view_all', 'C', 'CLICK', shift=True)
+    kmi = km.keymap_items.new('view3d.view_all', 'HOME', 'CLICK', shift=True)
     kmi.properties.center = True
 
     #-------------
@@ -794,18 +872,9 @@
     kmi = km.keymap_items.new('view3d.manipulator', 'EVT_TWEAK_L', 'ANY', any=True)
     kmi.properties.release_confirm = True
 
-    if MAYA_STYLE_MANIPULATORS:
-        kmi = km.keymap_items.new('view3d.manipulator_set', 'Q', 'CLICK')
-        kmi.properties.mode = 'NONE'
-        kmi = km.keymap_items.new('view3d.manipulator_set', TRANSLATE_KEY, 'CLICK')
-        kmi.properties.mode = 'TRANSLATE'
-        kmi = km.keymap_items.new('view3d.manipulator_set', ROTATE_KEY, 'CLICK')
-        kmi.properties.mode = 'ROTATE'
-        kmi = km.keymap_items.new('view3d.manipulator_set', SCALE_KEY, 'CLICK')

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list