[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28186] trunk/blender/release/scripts/ui/ space_userpref_keymap.py: Missed this file too

Matt Ebb matt at mke3.net
Wed Apr 14 09:09:01 CEST 2010


Revision: 28186
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28186
Author:   broken
Date:     2010-04-14 09:09:01 +0200 (Wed, 14 Apr 2010)

Log Message:
-----------
Missed this file too

Added Paths:
-----------
    trunk/blender/release/scripts/ui/space_userpref_keymap.py

Added: trunk/blender/release/scripts/ui/space_userpref_keymap.py
===================================================================
--- trunk/blender/release/scripts/ui/space_userpref_keymap.py	                        (rev 0)
+++ trunk/blender/release/scripts/ui/space_userpref_keymap.py	2010-04-14 07:09:01 UTC (rev 28186)
@@ -0,0 +1,810 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+import bpy
+import os
+import re
+import shutil
+
+KM_HIERARCHY = [
+    ('Window', 'EMPTY', 'WINDOW', []), # file save, window change, exit
+    ('Screen', 'EMPTY', 'WINDOW', [    # full screen, undo, screenshot
+        ('Screen Editing', 'EMPTY', 'WINDOW', []),    # resizing, action corners
+        ]),
+    
+    ('View2D', 'EMPTY', 'WINDOW', []),    # view 2d navigation (per region)
+    ('View2D Buttons List', 'EMPTY', 'WINDOW', []), # view 2d with buttons navigation
+    ('Header', 'EMPTY', 'WINDOW', []),    # header stuff (per region)
+    ('Grease Pencil', 'EMPTY', 'WINDOW', []), # grease pencil stuff (per region)
+    
+    ('3D View', 'VIEW_3D', 'WINDOW', [ # view 3d navigation and generic stuff (select, transform)
+        ('Object Mode', 'EMPTY', 'WINDOW', []),
+        ('Mesh', 'EMPTY', 'WINDOW', []),
+        ('Curve', 'EMPTY', 'WINDOW', []),
+        ('Armature', 'EMPTY', 'WINDOW', []),
+        ('Metaball', 'EMPTY', 'WINDOW', []),
+        ('Lattice', 'EMPTY', 'WINDOW', []),
+        ('Font', 'EMPTY', 'WINDOW', []),
+    
+        ('Pose', 'EMPTY', 'WINDOW', []),
+    
+        ('Vertex Paint', 'EMPTY', 'WINDOW', []),
+        ('Weight Paint', 'EMPTY', 'WINDOW', []),
+        ('Face Mask', 'EMPTY', 'WINDOW', []),
+        ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d
+        ('Sculpt', 'EMPTY', 'WINDOW', []),
+    
+        ('Armature Sketch', 'EMPTY', 'WINDOW', []),
+        ('Particle', 'EMPTY', 'WINDOW', []),
+    
+        ('Object Non-modal', 'EMPTY', 'WINDOW', []), # mode change
+    
+        ('3D View Generic', 'VIEW_3D', 'WINDOW', [])    # toolbar and properties
+        ]),
+    
+    ('Frames', 'EMPTY', 'WINDOW', []),    # frame navigation (per region)
+    ('Markers', 'EMPTY', 'WINDOW', []),    # markers (per region)
+    ('Animation', 'EMPTY', 'WINDOW', []),    # frame change on click, preview range (per region)
+    ('Animation Channels', 'EMPTY', 'WINDOW', []),
+    ('Graph Editor', 'GRAPH_EDITOR', 'WINDOW', [
+        ('Graph Editor Generic', 'GRAPH_EDITOR', 'WINDOW', [])
+        ]),
+    ('Dopesheet', 'DOPESHEET_EDITOR', 'WINDOW', []),
+    ('NLA Editor', 'NLA_EDITOR', 'WINDOW', [
+        ('NLA Channels', 'NLA_EDITOR', 'WINDOW', []),
+        ('NLA Generic', 'NLA_EDITOR', 'WINDOW', [])
+        ]),
+    
+    ('Image', 'IMAGE_EDITOR', 'WINDOW', [
+        ('UV Editor', 'EMPTY', 'WINDOW', []), # image (reverse order, UVEdit before Image
+        ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d
+        ('Image Generic', 'IMAGE_EDITOR', 'WINDOW', [])
+        ]),
+    
+    ('Timeline', 'TIMELINE', 'WINDOW', []),
+    ('Outliner', 'OUTLINER', 'WINDOW', []),
+    
+    ('Node Editor', 'NODE_EDITOR', 'WINDOW', [
+        ('Node Generic', 'NODE_EDITOR', 'WINDOW', [])
+        ]),
+    ('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', []),
+    ('Logic Editor', 'LOGIC_EDITOR', 'WINDOW', []),
+    
+    ('File Browser', 'FILE_BROWSER', 'WINDOW', [
+        ('File Browser Main', 'FILE_BROWSER', 'WINDOW', []),
+        ('File Browser Buttons', 'FILE_BROWSER', 'WINDOW', [])
+        ]),
+    
+    ('Property Editor', 'PROPERTIES', 'WINDOW', []), # align context menu
+    
+    ('Script', 'SCRIPTS_WINDOW', 'WINDOW', []),
+    ('Text', 'TEXT_EDITOR', 'WINDOW', []),
+    ('Console', 'CONSOLE', 'WINDOW', []),
+    
+    ('View3D Gesture Circle', 'EMPTY', 'WINDOW', []),
+    ('Gesture Border', 'EMPTY', 'WINDOW', []),
+    ('Standard Modal Map', 'EMPTY', 'WINDOW', []),
+    ('Transform Modal Map', 'EMPTY', 'WINDOW', []),
+    ('View3D Fly Modal', 'EMPTY', 'WINDOW', []),
+    ('View3D Rotate Modal', 'EMPTY', 'WINDOW', []),
+    ('View3D Move Modal', 'EMPTY', 'WINDOW', []),
+    ('View3D Zoom Modal', 'EMPTY', 'WINDOW', []),
+    ]
+
+def _km_exists_in(km, export_keymaps):
+    for km2, kc in export_keymaps:
+        if km2.name == km.name:
+            return True
+    return False
+    
+# kc1 takes priority over kc2
+def _merge_keymaps(kc1, kc2):
+    merged_keymaps = [(km, kc1) for km in kc1.keymaps]
+    if kc1 != kc2:
+        merged_keymaps.extend([(km, kc2) for km in kc2.keymaps if not _km_exists_in(km, merged_keymaps)])
+            
+    return merged_keymaps  
+
+class InputKeyMapPanel(bpy.types.Panel):
+    bl_space_type = 'USER_PREFERENCES'
+    bl_label = "Input"
+    bl_region_type = 'WINDOW'
+    bl_show_header = False
+    
+    def draw_entry(self, display_keymaps, entry, col, level=0):
+        idname, spaceid, regionid, children = entry
+
+        for km, kc in display_keymaps:
+            if km.name == idname and km.space_type == spaceid and km.region_type == regionid:
+                self.draw_km(display_keymaps, kc, km, children, col, level)
+                
+        '''
+        km = kc.find_keymap(idname, space_type=spaceid, region_type=regionid)
+        if not km:
+            kc = defkc
+            km = kc.find_keymap(idname, space_type=spaceid, region_type=regionid)
+        
+        if km:
+            self.draw_km(kc, km, children, col, level)
+        '''
+
+    def indented_layout(self, layout, level):
+        indentpx = 16
+        if level == 0:
+            level = 0.0001   # Tweak so that a percentage of 0 won't split by half
+        indent = level * indentpx / bpy.context.region.width
+
+        split = layout.split(percentage=indent)
+        col = split.column()
+        col = split.column()
+        return col
+
+    def draw_km(self, display_keymaps, kc, km, children, layout, level):
+        km = km.active()
+
+        layout.set_context_pointer("keymap", km)
+
+        col = self.indented_layout(layout, level)
+
+        row = col.row()
+        row.prop(km, "children_expanded", text="", no_bg=True)
+        row.label(text=km.name)
+
+        row.label()
+        row.label()
+
+        if km.modal:
+            row.label(text="", icon='LINKED')
+        if km.user_defined:
+            op = row.operator("wm.keymap_restore", text="Restore")
+        else:
+            op = row.operator("wm.keymap_edit", text="Edit")
+
+        if km.children_expanded:
+            if children:
+                # Put the Parent key map's entries in a 'global' sub-category
+                # equal in hierarchy to the other children categories
+                subcol = self.indented_layout(col, level + 1)
+                subrow = subcol.row()
+                subrow.prop(km, "items_expanded", text="", no_bg=True)
+                subrow.label(text="%s (Global)" % km.name)
+            else:
+                km.items_expanded = True
+
+            # Key Map items
+            if km.items_expanded:
+                for kmi in km.items:
+                    self.draw_kmi(display_keymaps, kc, km, kmi, col, level + 1)
+
+                # "Add New" at end of keymap item list
+                col = self.indented_layout(col, level + 1)
+                subcol = col.split(percentage=0.2).column()
+                subcol.enabled = km.user_defined
+                op = subcol.operator("wm.keyitem_add", text="Add New", icon='ZOOMIN')
+
+            col.separator()
+
+            # Child key maps
+            if children:
+                subcol = col.column()
+                row = subcol.row()
+
+                for entry in children:
+                    self.draw_entry(display_keymaps, entry, col, level + 1)
+
+    def draw_kmi(self, display_keymaps, kc, km, kmi, layout, level):
+        map_type = kmi.map_type
+
+        col = self.indented_layout(layout, level)
+
+        if km.user_defined:
+            col = col.column(align=True)
+            box = col.box()
+        else:
+            box = col.column()
+
+        split = box.split(percentage=0.05)
+
+        # header bar
+        row = split.row()
+        row.prop(kmi, "expanded", text="", no_bg=True)
+
+        row = split.row()
+        row.enabled = km.user_defined
+        row.prop(kmi, "active", text="", no_bg=True)
+
+        if km.modal:
+            row.prop(kmi, "propvalue", text="")
+        else:
+            row.label(text=kmi.name)
+
+        row = split.row()
+        row.enabled = km.user_defined
+        row.prop(kmi, "map_type", text="")
+        if map_type == 'KEYBOARD':
+            row.prop(kmi, "type", text="", full_event=True)
+        elif map_type == 'MOUSE':
+            row.prop(kmi, "type", text="", full_event=True)
+        elif map_type == 'TWEAK':
+            subrow = row.row()
+            subrow.prop(kmi, "type", text="")
+            subrow.prop(kmi, "value", text="")
+        elif map_type == 'TIMER':
+            row.prop(kmi, "type", text="")
+        else:
+            row.label()
+
+        if kmi.id:
+            op = row.operator("wm.keyitem_restore", text="", icon='BACK')
+            op.item_id = kmi.id
+        op = row.operator("wm.keyitem_remove", text="", icon='X')
+        op.item_id = kmi.id
+
+        # Expanded, additional event settings
+        if kmi.expanded:
+            box = col.box()
+
+            box.enabled = km.user_defined
+
+            if map_type not in ('TEXTINPUT', 'TIMER'):
+                split = box.split(percentage=0.4)
+                sub = split.row()
+
+                if km.modal:
+                    sub.prop(kmi, "propvalue", text="")
+                else:
+                    sub.prop(kmi, "idname", text="")
+
+                sub = split.column()

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list