Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release')
-rwxr-xr-xrelease/bin/blender-softwaregl9
-rwxr-xr-xrelease/bin/blender-thumbnailer.py2
-rw-r--r--release/darwin/README_codesigning.txt25
-rw-r--r--release/darwin/codesigning_rules_blender.plist14
-rw-r--r--release/darwin/codesigning_rules_player.plist15
-rwxr-xr-xrelease/datafiles/blender_icons.sh6
-rw-r--r--release/datafiles/blender_icons.svg445
-rw-r--r--release/datafiles/blender_icons16.pngbin240983 -> 240844 bytes
-rw-r--r--release/datafiles/blender_icons32.pngbin605580 -> 605416 bytes
-rw-r--r--release/datafiles/fonts/droidsans.ttf.gzbin2644825 -> 2644887 bytes
m---------release/datafiles/locale0
-rwxr-xr-xrelease/datafiles/prvicons.sh4
-rw-r--r--release/datafiles/splash.pngbin256816 -> 220834 bytes
m---------release/scripts/addons0
m---------release/scripts/addons_contrib0
-rw-r--r--release/scripts/freestyle/style_modules/parameter_editor.py9
-rw-r--r--release/scripts/modules/addon_utils.py4
-rw-r--r--release/scripts/modules/animsys_refactor.py668
-rw-r--r--release/scripts/modules/bl_i18n_utils/bl_extract_messages.py4
-rwxr-xr-xrelease/scripts/modules/bl_i18n_utils/merge_po.py2
-rw-r--r--release/scripts/modules/bl_i18n_utils/settings.py12
-rw-r--r--release/scripts/modules/bl_i18n_utils/utils.py13
-rwxr-xr-xrelease/scripts/modules/bl_i18n_utils/utils_rtl.py2
-rwxr-xr-xrelease/scripts/modules/blend_render_info.py2
-rw-r--r--release/scripts/modules/bpy/path.py2
-rw-r--r--release/scripts/modules/bpy/utils.py2
-rw-r--r--release/scripts/modules/bpy_extras/keyconfig_utils.py107
-rw-r--r--release/scripts/modules/bpy_extras/object_utils.py4
-rw-r--r--release/scripts/modules/rna_info.py1
-rw-r--r--release/scripts/modules/sys_info.py15
-rw-r--r--release/scripts/presets/keyconfig/3dsmax.py6
-rw-r--r--release/scripts/presets/keyconfig/maya.py12
-rw-r--r--release/scripts/startup/bl_operators/anim.py12
-rw-r--r--release/scripts/startup/bl_operators/node.py2
-rw-r--r--release/scripts/startup/bl_operators/presets.py28
-rw-r--r--release/scripts/startup/bl_operators/screen_play_rendered_anim.py10
-rw-r--r--release/scripts/startup/bl_operators/view3d.py46
-rw-r--r--release/scripts/startup/bl_operators/wm.py8
-rw-r--r--release/scripts/startup/bl_ui/properties_data_armature.py6
-rw-r--r--release/scripts/startup/bl_ui/properties_data_curve.py4
-rw-r--r--release/scripts/startup/bl_ui/properties_data_mesh.py16
-rw-r--r--release/scripts/startup/bl_ui/properties_data_modifier.py9
-rw-r--r--release/scripts/startup/bl_ui/properties_freestyle.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_mask_common.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_material.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_object.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_particle.py62
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_common.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_render.py18
-rw-r--r--release/scripts/startup/bl_ui/properties_render_layer.py4
-rw-r--r--release/scripts/startup/bl_ui/properties_scene.py6
-rw-r--r--release/scripts/startup/bl_ui/properties_world.py28
-rw-r--r--release/scripts/startup/bl_ui/space_clip.py14
-rw-r--r--release/scripts/startup/bl_ui/space_graph.py5
-rw-r--r--release/scripts/startup/bl_ui/space_image.py3
-rw-r--r--release/scripts/startup/bl_ui/space_info.py163
-rw-r--r--release/scripts/startup/bl_ui/space_node.py6
-rw-r--r--release/scripts/startup/bl_ui/space_sequencer.py4
-rw-r--r--release/scripts/startup/bl_ui/space_text.py2
-rw-r--r--release/scripts/startup/bl_ui/space_time.py9
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py12
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py186
-rw-r--r--release/scripts/startup/bl_ui/space_view3d_toolbar.py10
-rw-r--r--release/scripts/startup/nodeitems_builtins.py2
-rw-r--r--release/scripts/templates_py/addon_add_object.py1
-rw-r--r--release/scripts/templates_py/custom_nodes.py5
-rw-r--r--release/scripts/templates_py/operator_mesh_uv.py (renamed from release/scripts/templates_py/operator_uv.py)0
-rw-r--r--release/scripts/templates_py/operator_modal_timer.py11
-rw-r--r--release/text/readme.html118
70 files changed, 838 insertions, 1369 deletions
diff --git a/release/bin/blender-softwaregl b/release/bin/blender-softwaregl
index 970a7870760..8628dca2202 100755
--- a/release/bin/blender-softwaregl
+++ b/release/bin/blender-softwaregl
@@ -1,7 +1,6 @@
#!/bin/sh
-BF_DIST_BIN=`dirname "$0"`
-BF_PROGRAM="blender" # BF_PROGRAM=`basename "$0"`-bin
-exitcode=0
+BF_DIST_BIN=$(dirname "$0")
+BF_PROGRAM="blender" # BF_PROGRAM=$(basename "$0")-bin
LD_LIBRARY_PATH=${BF_DIST_BIN}/lib:${LD_LIBRARY_PATH}
@@ -20,6 +19,4 @@ XLIB_SKIP_ARGB_VISUALS=1
export LD_LIBRARY_PATH LD_LIBRARYN32_PATH LD_LIBRARYN64_PATH LD_LIBRARY_PATH_64 LD_PRELOAD XLIB_SKIP_ARGB_VISUALS
-"$BF_DIST_BIN/$BF_PROGRAM" ${1+"$@"}
-exitcode=$?
-exit $exitcode
+exec "$BF_DIST_BIN/$BF_PROGRAM" ${1+"$@"}
diff --git a/release/bin/blender-thumbnailer.py b/release/bin/blender-thumbnailer.py
index 8b93eebdeec..22e811c538e 100755
--- a/release/bin/blender-thumbnailer.py
+++ b/release/bin/blender-thumbnailer.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
# ##### BEGIN GPL LICENSE BLOCK #####
#
diff --git a/release/darwin/README_codesigning.txt b/release/darwin/README_codesigning.txt
new file mode 100644
index 00000000000..d2ead00da8a
--- /dev/null
+++ b/release/darwin/README_codesigning.txt
@@ -0,0 +1,25 @@
+Tutorial for codesigning Blender releases on OSX ( atm. i do manually when needed ):
+
+1. You need to obtain the certificates for blender foundation, they can bw pulled at Apple developer account for BF
+2. Run the following commands from terminal:
+
+codesign -s <IDENTITY> <path_to_blender.app> --resource-rules <path_to_blender_source>/release/darwin/codesigning_rules_blender.plist --deep
+
+codesign -s <IDENTITY> <path_to_blenderplayer.app> --resource-rules <path_to_blender_source>/release/darwin/codesigning_rules_player.plist --deep
+
+
+3. Checking:
+
+codesign -vv <path_to_blenderplayer.app>
+codesign -vv <path_to_blender.app>
+
+The result should be something like:
+
+<build_path>/blender.app: valid on disk
+<build_path>/blender.app: satisfies its Designated Requirement
+
+<build_path>/blenderplayer.app: valid on disk
+<build_path>/blenderplayer.app: satisfies its Designated Requirement
+
+Jens Verwiebe
+
diff --git a/release/darwin/codesigning_rules_blender.plist b/release/darwin/codesigning_rules_blender.plist
new file mode 100644
index 00000000000..b3baba80bbb
--- /dev/null
+++ b/release/darwin/codesigning_rules_blender.plist
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>rules</key>
+ <dict>
+ <!-- Exclude datafiles, python and scripts -->
+ <key>^MacOS/2.69</key>
+ <false/>
+ <key>^Resources/</key>
+ <true/>
+ </dict>
+</dict>
+</plist>
diff --git a/release/darwin/codesigning_rules_player.plist b/release/darwin/codesigning_rules_player.plist
new file mode 100644
index 00000000000..2a85041f307
--- /dev/null
+++ b/release/darwin/codesigning_rules_player.plist
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>rules</key>
+ <dict>
+ <!-- Exclude datafiles, python and scripts -->
+ <key>^MacOS/2.69</key>
+ <false/>
+ <!-- Exclude Resources for placing game.blend and own icons -->
+ <key>^Resources/</key>
+ <false/>
+ </dict>
+</dict>
+</plist>
diff --git a/release/datafiles/blender_icons.sh b/release/datafiles/blender_icons.sh
index 9c2cedaaf6c..62746d0ab7e 100755
--- a/release/datafiles/blender_icons.sh
+++ b/release/datafiles/blender_icons.sh
@@ -1,8 +1,8 @@
#!/bin/sh
# This script updates icons from the SVG file
-BASEDIR=$(dirname $0)
+BASEDIR=$(dirname "$0")
-inkscape $BASEDIR/blender_icons.svg --export-dpi=90 --without-gui --export-png=$BASEDIR/blender_icons16.png
-inkscape $BASEDIR/blender_icons.svg --export-dpi=180 --without-gui --export-png=$BASEDIR/blender_icons32.png
+inkscape "$BASEDIR/blender_icons.svg" --export-dpi=90 --without-gui --export-png="$BASEDIR/blender_icons16.png"
+inkscape "$BASEDIR/blender_icons.svg" --export-dpi=180 --without-gui --export-png="$BASEDIR/blender_icons32.png"
diff --git a/release/datafiles/blender_icons.svg b/release/datafiles/blender_icons.svg
index fef2b047474..27b93f6b10f 100644
--- a/release/datafiles/blender_icons.svg
+++ b/release/datafiles/blender_icons.svg
@@ -27061,11 +27061,11 @@
objecttolerance="10000"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="336.81018"
- inkscape:cy="34.425847"
+ inkscape:zoom="11.313708"
+ inkscape:cx="256.37124"
+ inkscape:cy="2.0121538"
inkscape:document-units="px"
- inkscape:current-layer="g24559-2"
+ inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="695"
@@ -33313,222 +33313,225 @@
inkscape:connector-curvature="0" />
</g>
</a>
- <path
- inkscape:connector-curvature="0"
- id="path19537-6"
- d="m 12,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19539-5"
- d="m 33,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 L 35,2 33,2 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19541-3"
- d="m 54,2 0,1 2,0 0,1 1,0 0,-1.25 -1,0 L 56,2 54,2 z m 2,2 -1,0 0,1 1,0 0,-1 z m 0,1 0,1 -2,0 0,1 2,0 0,-0.75 1,0 L 57,5 56,5 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19543-9"
- d="m 75,2 0,3 1,0 1,0 0,2 1,0 0,-4 -1,0 0,1 -1,0 0,-2 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19545-2"
- d="m 96,2 0,3 1,0 1,0 0,1 -2,0 0,1 2,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -1,0 0,-1 2,0 0,-1 -2,0 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19547-4"
- d="m 118,2 0,0.75 -1,0 0,3.25 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-1 -0.75,0 0,-1 -1.25,0 0,-1 1.5,0 0,-1 -1.5,0 z m 0,3 1,0 0,1 -1,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19549-6"
- d="m 138,2 0,1 2,0 0,1 -1,0 0,3 1,0 0,-2.75 1,0 0,-1.25 0,-1 -3,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19551-18"
- d="m 159.75,2 0,1 -0.5,0 0,1 0.5,0 0,1 -0.75,0 0,1 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-1 -0.75,0 0,-1 0.5,0 0,-1 -0.5,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,1 -1,0 0,-1 z m 0,2 1,0 0,1 -1,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19553-2"
- d="m 180.75,2 0,1 -0.75,0 0,1 0.75,0 0,1 1.25,0 0,1 -1.5,0 0,1 1.5,0 0,-0.75 1,0 0,-3.25 -0.75,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,1 -1,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccccccccc"
- id="path19555-1"
- d="m 202.75,2 0,1 -0.75,0 0,3 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-3 -0.75,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,3 -1,0 0,-3 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m 514,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
- id="path19559-1" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m 476,2 0,1 2,0 0,1 1,0 0,-1.25 -1,0 0,-0.75 -2,0 z m 2,2 -1,0 0,1 1,0 0,-1 z m 0,1 0,1 -2,0 0,1 2,0 0,-0.75 1,0 0,-1.25 -1,0 z"
- id="path19561-9" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m 497,2 0,3 1,0 1,0 0,2 1,0 0,-4 -1,0 0,1 -1,0 0,-2 -1,0 z"
- id="path19563-7" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m 518,2 0,3 1,0 1,0 0,1 -2,0 0,1 2,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -1,0 0,-1 2,0 0,-1 -2,0 -1,0 z"
- id="path19565-6" />
- <path
- inkscape:connector-curvature="0"
- id="path19577-2"
- d="m 200,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19579-9"
- d="m 244,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19581-5"
- d="m 265,2 0,1 2,0 0,1 1,0 0,-1.25 -1,0 0,-0.75 -2,0 z m 2,2 -1,0 0,1 1,0 0,-1 z m 0,1 0,1 -2,0 0,1 2,0 0,-0.75 1,0 0,-1.25 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19583-2"
- d="m 286,2 0,3 1,0 1,0 0,2 1,0 0,-4 -1,0 0,1 -1,0 0,-2 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19585-0"
- d="m 307,2 0,3 1,0 1,0 0,1 -2,0 0,1 2,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -1,0 0,-1 2,0 0,-1 -2,0 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19587-0"
- d="m 329,2 0,0.75 -1,0 0,3.25 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-1 -0.75,0 0,-1 -1.25,0 0,-1 1.5,0 0,-1 -1.5,0 z m 0,3 1,0 0,1 -1,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19589-3"
- d="m 349,2 0,1 2,0 0,1 -1,0 0,3 1,0 0,-2.75 1,0 0,-1.25 0,-1 -3,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19591-9"
- d="m 370.75,2 0,1 -0.5,0 0,1 0.5,0 0,1 -0.75,0 0,1 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-1 -0.75,0 0,-1 0.5,0 0,-1 -0.5,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,1 -1,0 0,-1 z m 0,2 1,0 0,1 -1,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19593-1"
- d="m 391.75,2 0,1 -0.75,0 0,1 0.75,0 0,1 1.25,0 0,1 -1.5,0 0,1 1.5,0 0,-0.75 1,0 0,-3.25 -0.75,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,1 -1,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19595-8"
- d="m 413.75,2 0,1 -0.75,0 0,3 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-3 -0.75,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,3 -1,0 0,-3 z m 0.25,1 0,1 0.5,0 0,-1 -0.5,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19597-1"
- d="m 221,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m 224,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- id="path19599-9" />
- <path
- inkscape:connector-curvature="0"
- id="path19601-5"
- d="m 242,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19603-3"
- d="m 263,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19605-2"
- d="m 284,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19607-5"
- d="m 305,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19609-2"
- d="m 326,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19611-5"
- d="m 347,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19613-8"
- d="m 368,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19615-6"
- d="m 389,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19617-7"
- d="m 409,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19619-7"
- d="m 435,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19621-2"
- d="m 430,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19623-2"
- d="m 451,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m 455,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
- id="path19625-9" />
- <path
- inkscape:connector-curvature="0"
- id="path19627-4"
- d="m 472,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path19629-1"
- d="m 493,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path11036-9"
- d="m 536,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m 541,2 0,0.75 -1,0 0,3.25 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-1 -0.75,0 0,-1 -1.25,0 0,-1 1.5,0 0,-1 -1.5,0 z m 0,3 1,0 0,1 -1,0 0,-1 z"
- id="path11038-6" />
+ <g
+ id="g15986">
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 12,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19537-6"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 33,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 L 35,2 33,2 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
+ id="path19539-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 54,2 0,1 2,0 0,1 1,0 0,-1.25 -1,0 L 56,2 54,2 z m 2,2 -1,0 0,1 1,0 0,-1 z m 0,1 0,1 -2,0 0,1 2,0 0,-0.75 1,0 L 57,5 56,5 z"
+ id="path19541-3"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 75,2 0,3 1,0 1,0 0,2 1,0 0,-4 -1,0 0,1 -1,0 0,-2 -1,0 z"
+ id="path19543-9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 96,2 0,3 1,0 1,0 0,1 -2,0 0,1 2,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -1,0 0,-1 2,0 0,-1 -2,0 -1,0 z"
+ id="path19545-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 118,2 0,0.75 -1,0 0,3.25 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-1 -0.75,0 0,-1 -1.25,0 0,-1 1.5,0 0,-1 -1.5,0 z m 0,3 1,0 0,1 -1,0 0,-1 z"
+ id="path19547-4"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 138,2 0,1 2,0 0,1 -1,0 0,3 1,0 0,-2.75 1,0 0,-1.25 0,-1 -3,0 z"
+ id="path19549-6"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 159.75,2 0,1 -0.5,0 0,1 0.5,0 0,1 -0.75,0 0,1 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-1 -0.75,0 0,-1 0.5,0 0,-1 -0.5,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,1 -1,0 0,-1 z m 0,2 1,0 0,1 -1,0 0,-1 z"
+ id="path19551-18"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 180.75,2 0,1 -0.75,0 0,1 0.75,0 0,1 1.25,0 0,1 -1.5,0 0,1 1.5,0 0,-0.75 1,0 0,-3.25 -0.75,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,1 -1,0 0,-1 z"
+ id="path19553-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 202.75,2 0,1 -0.75,0 0,3 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-3 -0.75,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,3 -1,0 0,-3 z"
+ id="path19555-1"
+ sodipodi:nodetypes="cccccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path19559-1"
+ d="m 514,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path19561-9"
+ d="m 476,2 0,1 2,0 0,1 1,0 0,-1.25 -1,0 0,-0.75 -2,0 z m 2,2 -1,0 0,1 1,0 0,-1 z m 0,1 0,1 -2,0 0,1 2,0 0,-0.75 1,0 0,-1.25 -1,0 z"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path19563-7"
+ d="m 497,2 0,3 1,0 1,0 0,2 1,0 0,-4 -1,0 0,1 -1,0 0,-2 -1,0 z"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path19565-6"
+ d="m 518,2 0,3 1,0 1,0 0,1 -2,0 0,1 2,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -1,0 0,-1 2,0 0,-1 -2,0 -1,0 z"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 200,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19577-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 244,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
+ id="path19579-9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 265,2 0,1 2,0 0,1 1,0 0,-1.25 -1,0 0,-0.75 -2,0 z m 2,2 -1,0 0,1 1,0 0,-1 z m 0,1 0,1 -2,0 0,1 2,0 0,-0.75 1,0 0,-1.25 -1,0 z"
+ id="path19581-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 286,2 0,3 1,0 1,0 0,2 1,0 0,-4 -1,0 0,1 -1,0 0,-2 -1,0 z"
+ id="path19583-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 307,2 0,3 1,0 1,0 0,1 -2,0 0,1 2,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -1,0 0,-1 2,0 0,-1 -2,0 -1,0 z"
+ id="path19585-0"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 329,2 0,0.75 -1,0 0,3.25 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-1 -0.75,0 0,-1 -1.25,0 0,-1 1.5,0 0,-1 -1.5,0 z m 0,3 1,0 0,1 -1,0 0,-1 z"
+ id="path19587-0"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 349,2 0,1 2,0 0,1 -1,0 0,3 1,0 0,-2.75 1,0 0,-1.25 0,-1 -3,0 z"
+ id="path19589-3"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 370.75,2 0,1 -0.5,0 0,1 0.5,0 0,1 -0.75,0 0,1 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-1 -0.75,0 0,-1 0.5,0 0,-1 -0.5,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,1 -1,0 0,-1 z m 0,2 1,0 0,1 -1,0 0,-1 z"
+ id="path19591-9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 391.75,2 0,1 -0.75,0 0,1 0.75,0 0,1 1.25,0 0,1 -1.5,0 0,1 1.5,0 0,-0.75 1,0 0,-3.25 -0.75,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,1 -1,0 0,-1 z"
+ id="path19593-1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 413.75,2 0,1 -0.75,0 0,3 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-3 -0.75,0 0,-1 -1.5,0 z m 0.25,1 1,0 0,3 -1,0 0,-3 z m 0.25,1 0,1 0.5,0 0,-1 -0.5,0 z"
+ id="path19595-8"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 221,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19597-1"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path19599-9"
+ d="m 224,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 242,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19601-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 263,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19603-3"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 284,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19605-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 305,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19607-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 326,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19609-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 347,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19611-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 368,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19613-8"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 389,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19615-6"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 409,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
+ id="path19617-7"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 435,2 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
+ id="path19619-7"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 430,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
+ id="path19621-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 451,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
+ id="path19623-2"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path19625-9"
+ d="m 455,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 472,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
+ id="path19627-4"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 493,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
+ id="path19629-1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 536,2 0,1 2,0 0,1 -1,0 0,1 1,0 0,-0.75 1,0 0,-1.5 -1,0 0,-0.75 -2,0 z m 1,3 -1,0 0,1 0,1 3,0 0,-1 -2,0 0,-1 z"
+ id="path11036-9"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path11038-6"
+ d="m 541,2 0,0.75 -1,0 0,3.25 0.75,0 0,1 1.5,0 0,-1 0.75,0 0,-1 -0.75,0 0,-1 -1.25,0 0,-1 1.5,0 0,-1 -1.5,0 z m 0,3 1,0 0,1 -1,0 0,-1 z"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:connector-curvature="0" />
+ </g>
<g
id="g11125-9"
transform="translate(547,1)"
@@ -33681,7 +33684,7 @@
<g
style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="g41041-8"
- transform="translate(0,634)">
+ transform="translate(0,636)">
<path
id="path41043-2"
d="m 12,1 0,1 -1,0 0,1 1,0 0,3 1,0 0,-5 -1,0 z"
diff --git a/release/datafiles/blender_icons16.png b/release/datafiles/blender_icons16.png
index 24d95d7ec5c..2f2f8deed68 100644
--- a/release/datafiles/blender_icons16.png
+++ b/release/datafiles/blender_icons16.png
Binary files differ
diff --git a/release/datafiles/blender_icons32.png b/release/datafiles/blender_icons32.png
index 3f8901fafd9..8b469238735 100644
--- a/release/datafiles/blender_icons32.png
+++ b/release/datafiles/blender_icons32.png
Binary files differ
diff --git a/release/datafiles/fonts/droidsans.ttf.gz b/release/datafiles/fonts/droidsans.ttf.gz
index 81683e6379f..c76cf67992c 100644
--- a/release/datafiles/fonts/droidsans.ttf.gz
+++ b/release/datafiles/fonts/droidsans.ttf.gz
Binary files differ
diff --git a/release/datafiles/locale b/release/datafiles/locale
new file mode 160000
+Subproject d3e0405103f9ccabb8e567a8c69e9d4015aaa3b
diff --git a/release/datafiles/prvicons.sh b/release/datafiles/prvicons.sh
index 1a82b4db71c..95546ff0a4a 100755
--- a/release/datafiles/prvicons.sh
+++ b/release/datafiles/prvicons.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# This script updates icons from the SVG file
-BASEDIR=$(dirname $0)
+BASEDIR=$(dirname "$0")
-inkscape $BASEDIR/prvicons.svg --without-gui --export-png=$BASEDIR/prvicons.png
+inkscape "$BASEDIR/prvicons.svg" --without-gui --export-png="$BASEDIR/prvicons.png"
diff --git a/release/datafiles/splash.png b/release/datafiles/splash.png
index 4ee82bcbb62..ad0028ee0b4 100644
--- a/release/datafiles/splash.png
+++ b/release/datafiles/splash.png
Binary files differ
diff --git a/release/scripts/addons b/release/scripts/addons
new file mode 160000
+Subproject 4d8cb6c294727ff10afeb548759f629b0c2169d
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
new file mode 160000
+Subproject 4fe6a9e046f9578a0dadb1186269ac5e406a8c1
diff --git a/release/scripts/freestyle/style_modules/parameter_editor.py b/release/scripts/freestyle/style_modules/parameter_editor.py
index dd6206fff99..83bd8dbda5e 100644
--- a/release/scripts/freestyle/style_modules/parameter_editor.py
+++ b/release/scripts/freestyle/style_modules/parameter_editor.py
@@ -32,7 +32,7 @@ from freestyle import BackboneStretcherShader, BezierCurveShader, BinaryPredicat
FalseBP1D, FalseUP1D, GuidingLinesShader, Interface0DIterator, Nature, Noise, Normal2DF0D, Operators, \
PolygonalizationShader, QuantitativeInvisibilityF1D, QuantitativeInvisibilityUP1D, SamplingShader, \
SpatialNoiseShader, StrokeAttribute, StrokeShader, TipRemoverShader, TrueBP1D, TrueUP1D, UnaryPredicate0D, \
- UnaryPredicate1D, VertexOrientation2DF0D, WithinImageBoundaryUP1D, ContextFunctions
+ UnaryPredicate1D, VertexOrientation2DF0D, WithinImageBoundaryUP1D, ContextFunctions, TVertex
from Functions0D import CurveMaterialF0D
from PredicatesU1D import pyNatureUP1D
from logical_operators import AndUP1D, NotUP1D, OrUP1D
@@ -1085,6 +1085,8 @@ def iter_three_segments(stroke):
it3.increment()
it4.increment()
+def is_tvertex(svertex):
+ return type(svertex.viewvertex) is TVertex
class StrokeCleaner(StrokeShader):
def shade(self, stroke):
@@ -1092,7 +1094,10 @@ class StrokeCleaner(StrokeShader):
seg1 = sv2.point - sv1.point
seg2 = sv3.point - sv2.point
seg3 = sv4.point - sv3.point
- if seg1.dot(seg2) < 0.0 and seg2.dot(seg3) < 0.0:
+ if not ((is_tvertex(sv2.first_svertex) and is_tvertex(sv2.second_svertex)) or
+ (is_tvertex(sv3.first_svertex) and is_tvertex(sv3.second_svertex))):
+ continue
+ if seg1.dot(seg2) < 0.0 and seg2.dot(seg3) < 0.0 and seg2.length < 0.01:
#print(sv2.first_svertex.viewvertex)
#print(sv2.second_svertex.viewvertex)
#print(sv3.first_svertex.viewvertex)
diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py
index 2ac7d4c85aa..e76bcc02751 100644
--- a/release/scripts/modules/addon_utils.py
+++ b/release/scripts/modules/addon_utils.py
@@ -35,6 +35,7 @@ error_duplicates = False
error_encoding = False
addons_fake_modules = {}
+
def paths():
# RELEASE SCRIPTS: official scripts distributed in Blender releases
addon_paths = _bpy.utils.script_paths("addons")
@@ -128,7 +129,7 @@ def modules_refresh(module_cache=addons_fake_modules):
mod.__file__ = mod_path
mod.__time__ = os.path.getmtime(mod_path)
except:
- print("AST error in module %s" % mod_name)
+ print("AST error parsing bl_info for %s" % mod_name)
import traceback
traceback.print_exc()
raise
@@ -408,7 +409,6 @@ def module_bl_info(mod, info_basis={"name": "",
"location": "",
"description": "",
"wiki_url": "",
- "tracker_url": "",
"support": 'COMMUNITY',
"category": "",
"warning": "",
diff --git a/release/scripts/modules/animsys_refactor.py b/release/scripts/modules/animsys_refactor.py
index fd6087b38e6..9730a05c2d2 100644
--- a/release/scripts/modules/animsys_refactor.py
+++ b/release/scripts/modules/animsys_refactor.py
@@ -22,7 +22,7 @@
This module has utility functions for renaming
rna values in fcurves and drivers.
-The main function to use is: update_data_paths(...)
+Currently unused, but might become useful later again.
"""
IS_TESTING = False
@@ -216,672 +216,6 @@ def update_data_paths(rna_update):
print("fcurve (%s): %s -> %s" % (id_data.name, data_path, data_path_new))
-# we could have this data in its own file but no point really
-data_2_56_to_2_59 = (
- ("ClothCollisionSettings", "min_distance", "distance_min"),
- ("ClothCollisionSettings", "self_min_distance", "self_distance_min"),
- ("ClothCollisionSettings", "enable_collision", "use_collision"),
- ("ClothCollisionSettings", "enable_self_collision", "use_self_collision"),
- ("ClothSettings", "pin_cloth", "use_pin_cloth"),
- ("ClothSettings", "stiffness_scaling", "use_stiffness_scale"),
- ("CollisionSettings", "random_damping", "damping_random"),
- ("CollisionSettings", "random_friction", "friction_random"),
- ("CollisionSettings", "inner_thickness", "thickness_inner"),
- ("CollisionSettings", "outer_thickness", "thickness_outer"),
- ("CollisionSettings", "kill_particles", "use_particle_kill"),
- ("Constraint", "proxy_local", "is_proxy_local"),
- ("ActionConstraint", "maximum", "max"),
- ("ActionConstraint", "minimum", "min"),
- ("FollowPathConstraint", "use_fixed_position", "use_fixed_location"),
- ("KinematicConstraint", "chain_length", "chain_count"),
- ("KinematicConstraint", "pos_lock_x", "lock_location_x"),
- ("KinematicConstraint", "pos_lock_y", "lock_location_y"),
- ("KinematicConstraint", "pos_lock_z", "lock_location_z"),
- ("KinematicConstraint", "rot_lock_x", "lock_rotation_x"),
- ("KinematicConstraint", "rot_lock_y", "lock_rotation_y"),
- ("KinematicConstraint", "rot_lock_z", "lock_rotation_z"),
- ("KinematicConstraint", "axis_reference", "reference_axis"),
- ("KinematicConstraint", "use_position", "use_location"),
- ("LimitLocationConstraint", "maximum_x", "max_x"),
- ("LimitLocationConstraint", "maximum_y", "max_y"),
- ("LimitLocationConstraint", "maximum_z", "max_z"),
- ("LimitLocationConstraint", "minimum_x", "min_x"),
- ("LimitLocationConstraint", "minimum_y", "min_y"),
- ("LimitLocationConstraint", "minimum_z", "min_z"),
- ("LimitLocationConstraint", "use_maximum_x", "use_max_x"),
- ("LimitLocationConstraint", "use_maximum_y", "use_max_y"),
- ("LimitLocationConstraint", "use_maximum_z", "use_max_z"),
- ("LimitLocationConstraint", "use_minimum_x", "use_min_x"),
- ("LimitLocationConstraint", "use_minimum_y", "use_min_y"),
- ("LimitLocationConstraint", "use_minimum_z", "use_min_z"),
- ("LimitLocationConstraint", "limit_transform", "use_transform_limit"),
- ("LimitRotationConstraint", "maximum_x", "max_x"),
- ("LimitRotationConstraint", "maximum_y", "max_y"),
- ("LimitRotationConstraint", "maximum_z", "max_z"),
- ("LimitRotationConstraint", "minimum_x", "min_x"),
- ("LimitRotationConstraint", "minimum_y", "min_y"),
- ("LimitRotationConstraint", "minimum_z", "min_z"),
- ("LimitRotationConstraint", "limit_transform", "use_transform_limit"),
- ("LimitScaleConstraint", "maximum_x", "max_x"),
- ("LimitScaleConstraint", "maximum_y", "max_y"),
- ("LimitScaleConstraint", "maximum_z", "max_z"),
- ("LimitScaleConstraint", "minimum_x", "min_x"),
- ("LimitScaleConstraint", "minimum_y", "min_y"),
- ("LimitScaleConstraint", "minimum_z", "min_z"),
- ("LimitScaleConstraint", "use_maximum_x", "use_max_x"),
- ("LimitScaleConstraint", "use_maximum_y", "use_max_y"),
- ("LimitScaleConstraint", "use_maximum_z", "use_max_z"),
- ("LimitScaleConstraint", "use_minimum_x", "use_min_x"),
- ("LimitScaleConstraint", "use_minimum_y", "use_min_y"),
- ("LimitScaleConstraint", "use_minimum_z", "use_min_z"),
- ("LimitScaleConstraint", "limit_transform", "use_transform_limit"),
- ("PivotConstraint", "enabled_rotation_range", "rotation_range"),
- ("PivotConstraint", "use_relative_position", "use_relative_location"),
- ("PythonConstraint", "number_of_targets", "target_count"),
- ("SplineIKConstraint", "chain_length", "chain_count"),
- ("SplineIKConstraint", "chain_offset", "use_chain_offset"),
- ("SplineIKConstraint", "even_divisions", "use_even_divisions"),
- ("SplineIKConstraint", "y_stretch", "use_y_stretch"),
- ("SplineIKConstraint", "xz_scaling_mode", "xz_scale_mode"),
- ("StretchToConstraint", "original_length", "rest_length"),
- ("TrackToConstraint", "target_z", "use_target_z"),
- ("TransformConstraint", "extrapolate_motion", "use_motion_extrapolate"),
- ("FieldSettings", "do_location", "apply_to_location"),
- ("FieldSettings", "do_rotation", "apply_to_rotation"),
- ("FieldSettings", "maximum_distance", "distance_max"),
- ("FieldSettings", "minimum_distance", "distance_min"),
- ("FieldSettings", "radial_maximum", "radial_max"),
- ("FieldSettings", "radial_minimum", "radial_min"),
- ("FieldSettings", "force_2d", "use_2d_force"),
- ("FieldSettings", "do_absorption", "use_absorption"),
- ("FieldSettings", "global_coordinates", "use_global_coords"),
- ("FieldSettings", "guide_path_add", "use_guide_path_add"),
- ("FieldSettings", "multiple_springs", "use_multiple_springs"),
- ("FieldSettings", "use_coordinates", "use_object_coords"),
- ("FieldSettings", "root_coordinates", "use_root_coords"),
- ("ControlFluidSettings", "reverse_frames", "use_reverse_frames"),
- ("DomainFluidSettings", "real_world_size", "simulation_scale"),
- ("DomainFluidSettings", "surface_smoothing", "surface_smooth"),
- ("DomainFluidSettings", "reverse_frames", "use_reverse_frames"),
- ("DomainFluidSettings", "generate_speed_vectors", "use_speed_vectors"),
- ("DomainFluidSettings", "override_time", "use_time_override"),
- ("FluidFluidSettings", "export_animated_mesh", "use_animated_mesh"),
- ("InflowFluidSettings", "export_animated_mesh", "use_animated_mesh"),
- ("InflowFluidSettings", "local_coordinates", "use_local_coords"),
- ("ObstacleFluidSettings", "export_animated_mesh", "use_animated_mesh"),
- ("OutflowFluidSettings", "export_animated_mesh", "use_animated_mesh"),
- ("ParticleFluidSettings", "drops", "use_drops"),
- ("ParticleFluidSettings", "floats", "use_floats"),
- ("Armature", "drawtype", "draw_type"),
- ("Armature", "layer_protection", "layers_protected"),
- ("Armature", "auto_ik", "use_auto_ik"),
- ("Armature", "delay_deform", "use_deform_delay"),
- ("Armature", "deform_envelope", "use_deform_envelopes"),
- ("Armature", "deform_quaternion", "use_deform_preserve_volume"),
- ("Armature", "deform_vertexgroups", "use_deform_vertex_groups"),
- ("Armature", "x_axis_mirror", "use_mirror_x"),
- ("Curve", "width", "offset"),
- ("Image", "animation_speed", "fps"),
- ("Image", "animation_end", "frame_end"),
- ("Image", "animation_start", "frame_start"),
- ("Image", "animated", "use_animation"),
- ("Image", "clamp_x", "use_clamp_x"),
- ("Image", "clamp_y", "use_clamp_y"),
- ("Image", "premultiply", "use_premultiply"),
- ("AreaLamp", "shadow_ray_sampling_method", "shadow_ray_sample_method"),
- ("AreaLamp", "only_shadow", "use_only_shadow"),
- ("AreaLamp", "shadow_layer", "use_shadow_layer"),
- ("AreaLamp", "umbra", "use_umbra"),
- ("PointLamp", "shadow_ray_sampling_method", "shadow_ray_sample_method"),
- ("PointLamp", "only_shadow", "use_only_shadow"),
- ("PointLamp", "shadow_layer", "use_shadow_layer"),
- ("PointLamp", "sphere", "use_sphere"),
- ("SpotLamp", "shadow_ray_sampling_method", "shadow_ray_sample_method"),
- ("SpotLamp", "auto_clip_end", "use_auto_clip_end"),
- ("SpotLamp", "auto_clip_start", "use_auto_clip_start"),
- ("SpotLamp", "only_shadow", "use_only_shadow"),
- ("SpotLamp", "shadow_layer", "use_shadow_layer"),
- ("SpotLamp", "sphere", "use_sphere"),
- ("SunLamp", "only_shadow", "use_only_shadow"),
- ("SunLamp", "shadow_layer", "use_shadow_layer"),
- ("Material", "z_offset", "offset_z"),
- ("Material", "shadow_casting_alpha", "shadow_cast_alpha"),
- ("Material", "cast_approximate", "use_cast_approximate"),
- ("Material", "cast_buffer_shadows", "use_cast_buffer_shadows"),
- ("Material", "cast_shadows_only", "use_cast_shadows_only"),
- ("Material", "face_texture", "use_face_texture"),
- ("Material", "face_texture_alpha", "use_face_texture_alpha"),
- ("Material", "full_oversampling", "use_full_oversampling"),
- ("Material", "light_group_exclusive", "use_light_group_exclusive"),
- ("Material", "object_color", "use_object_color"),
- ("Material", "only_shadow", "use_only_shadow"),
- ("Material", "ray_shadow_bias", "use_ray_shadow_bias"),
- ("Material", "traceable", "use_raytrace"),
- ("Material", "shadeless", "use_shadeless"),
- ("Material", "tangent_shading", "use_tangent_shading"),
- ("Material", "transparency", "use_transparency"),
- ("Material", "receive_transparent_shadows", "use_transparent_shadows"),
- ("Material", "vertex_color_light", "use_vertex_color_light"),
- ("Material", "vertex_color_paint", "use_vertex_color_paint"),
- ("Mesh", "autosmooth_angle", "auto_smooth_angle"),
- ("Mesh", "autosmooth", "use_auto_smooth"),
- ("Object", "max_draw_type", "draw_type"),
- ("Object", "use_dupli_verts_rotation", "use_dupli_vertices_rotation"),
- ("Object", "shape_key_edit_mode", "use_shape_key_edit_mode"),
- ("Object", "slow_parent", "use_slow_parent"),
- ("Object", "time_offset_add_parent", "use_time_offset_add_parent"),
- ("Object", "time_offset_edit", "use_time_offset_edit"),
- ("Object", "time_offset_parent", "use_time_offset_parent"),
- ("Object", "time_offset_particle", "use_time_offset_particle"),
- ("ParticleSettings", "adaptive_pix", "adaptive_pixel"),
- ("ParticleSettings", "child_effector", "apply_effector_to_children"),
- ("ParticleSettings", "child_guide", "apply_guide_to_children"),
- ("ParticleSettings", "billboard_split_offset", "billboard_offset_split"),
- ("ParticleSettings", "billboard_random_tilt", "billboard_tilt_random"),
- ("ParticleSettings", "child_length_thres", "child_length_threshold"),
- ("ParticleSettings", "child_random_size", "child_size_random"),
- ("ParticleSettings", "clumppow", "clump_shape"),
- ("ParticleSettings", "damp_factor", "damping"),
- ("ParticleSettings", "draw_as", "draw_method"),
- ("ParticleSettings", "random_factor", "factor_random"),
- ("ParticleSettings", "grid_invert", "invert_grid"),
- ("ParticleSettings", "random_length", "length_random"),
- ("ParticleSettings", "random_lifetime", "lifetime_random"),
- ("ParticleSettings", "billboard_lock", "lock_billboard"),
- ("ParticleSettings", "boids_2d", "lock_boids_to_surface"),
- ("ParticleSettings", "object_aligned_factor", "object_align_factor"),
- ("ParticleSettings", "random_phase_factor", "phase_factor_random"),
- ("ParticleSettings", "ren_as", "render_type"),
- ("ParticleSettings", "rendered_child_nbr", "rendered_child_count"),
- ("ParticleSettings", "random_rotation_factor", "rotation_factor_random"),
- ("ParticleSettings", "rough1", "roughness_1"),
- ("ParticleSettings", "rough1_size", "roughness_1_size"),
- ("ParticleSettings", "rough2", "roughness_2"),
- ("ParticleSettings", "rough2_size", "roughness_2_size"),
- ("ParticleSettings", "rough2_thres", "roughness_2_threshold"),
- ("ParticleSettings", "rough_end_shape", "roughness_end_shape"),
- ("ParticleSettings", "rough_endpoint", "roughness_endpoint"),
- ("ParticleSettings", "random_size", "size_random"),
- ("ParticleSettings", "abs_path_time", "use_absolute_path_time"),
- ("ParticleSettings", "animate_branching", "use_animate_branching"),
- ("ParticleSettings", "branching", "use_branching"),
- ("ParticleSettings", "died", "use_dead"),
- ("ParticleSettings", "die_on_collision", "use_die_on_collision"),
- ("ParticleSettings", "rotation_dynamic", "use_dynamic_rotation"),
- ("ParticleSettings", "even_distribution", "use_even_distribution"),
- ("ParticleSettings", "rand_group", "use_group_pick_random"),
- ("ParticleSettings", "hair_bspline", "use_hair_bspline"),
- ("ParticleSettings", "sizemass", "use_multiply_size_mass"),
- ("ParticleSettings", "react_multiple", "use_react_multiple"),
- ("ParticleSettings", "react_start_end", "use_react_start_end"),
- ("ParticleSettings", "render_adaptive", "use_render_adaptive"),
- ("ParticleSettings", "self_effect", "use_self_effect"),
- ("ParticleSettings", "enable_simplify", "use_simplify"),
- ("ParticleSettings", "size_deflect", "use_size_deflect"),
- ("ParticleSettings", "render_strand", "use_strand_primitive"),
- ("ParticleSettings", "symmetric_branching", "use_symmetric_branching"),
- ("ParticleSettings", "velocity_length", "use_velocity_length"),
- ("ParticleSettings", "whole_group", "use_whole_group"),
- ("CloudsTexture", "noise_size", "noise_scale"),
- ("DistortedNoiseTexture", "noise_size", "noise_scale"),
- ("EnvironmentMapTexture", "filter_size_minimum", "use_filter_size_min"),
- ("EnvironmentMapTexture", "mipmap_gauss", "use_mipmap_gauss"),
- ("ImageTexture", "calculate_alpha", "use_calculate_alpha"),
- ("ImageTexture", "checker_even", "use_checker_even"),
- ("ImageTexture", "checker_odd", "use_checker_odd"),
- ("ImageTexture", "filter_size_minimum", "use_filter_size_min"),
- ("ImageTexture", "flip_axis", "use_flip_axis"),
- ("ImageTexture", "mipmap_gauss", "use_mipmap_gauss"),
- ("ImageTexture", "mirror_x", "use_mirror_x"),
- ("ImageTexture", "mirror_y", "use_mirror_y"),
- ("ImageTexture", "normal_map", "use_normal_map"),
- ("MarbleTexture", "noise_size", "noise_scale"),
- ("MarbleTexture", "noisebasis2", "noise_basis_2"),
- ("MarbleTexture", "noisebasis_2", "noise_basis_2"),
- ("MusgraveTexture", "highest_dimension", "dimension_max"),
- ("MusgraveTexture", "noise_size", "noise_scale"),
- ("StucciTexture", "noise_size", "noise_scale"),
- ("VoronoiTexture", "coloring", "color_mode"),
- ("VoronoiTexture", "noise_size", "noise_scale"),
- ("WoodTexture", "noise_size", "noise_scale"),
- ("WoodTexture", "noisebasis2", "noise_basis_2"),
- ("WoodTexture", "noisebasis_2", "noise_basis_2"),
- ("World", "blend_sky", "use_sky_blend"),
- ("World", "paper_sky", "use_sky_paper"),
- ("World", "real_sky", "use_sky_real"),
- ("ImageUser", "auto_refresh", "use_auto_refresh"),
- ("MaterialHalo", "flares_sub", "flare_subflare_count"),
- ("MaterialHalo", "flare_subsize", "flare_subflare_size"),
- ("MaterialHalo", "line_number", "line_count"),
- ("MaterialHalo", "rings", "ring_count"),
- ("MaterialHalo", "star_tips", "star_tip_count"),
- ("MaterialHalo", "xalpha", "use_extreme_alpha"),
- ("MaterialHalo", "flare_mode", "use_flare_mode"),
- ("MaterialHalo", "vertex_normal", "use_vertex_normal"),
- ("MaterialPhysics", "align_to_normal", "use_normal_align"),
- ("MaterialStrand", "min_size", "size_min"),
- ("MaterialStrand", "blender_units", "use_blender_units"),
- ("MaterialStrand", "surface_diffuse", "use_surface_diffuse"),
- ("MaterialStrand", "tangent_shading", "use_tangent_shading"),
- ("MaterialSubsurfaceScattering", "error_tolerance", "error_threshold"),
- ("MaterialVolume", "depth_cutoff", "depth_threshold"),
- ("MaterialVolume", "lighting_mode", "light_method"),
- ("MaterialVolume", "step_calculation", "step_method"),
- ("MaterialVolume", "external_shadows", "use_external_shadows"),
- ("MaterialVolume", "light_cache", "use_light_cache"),
- ("ArmatureModifier", "multi_modifier", "use_multi_modifier"),
- ("ArrayModifier", "constant_offset_displacement", "constant_offset_displace"),
- ("ArrayModifier", "merge_distance", "merge_threshold"),
- ("ArrayModifier", "relative_offset_displacement", "relative_offset_displace"),
- ("ArrayModifier", "constant_offset", "use_constant_offset"),
- ("ArrayModifier", "merge_adjacent_vertices", "use_merge_vertices"),
- ("ArrayModifier", "merge_end_vertices", "use_merge_vertices_cap"),
- ("ArrayModifier", "add_offset_object", "use_object_offset"),
- ("ArrayModifier", "relative_offset", "use_relative_offset"),
- ("BevelModifier", "only_vertices", "use_only_vertices"),
- ("CastModifier", "from_radius", "use_radius_as_size"),
- ("DisplaceModifier", "midlevel", "mid_level"),
- ("DisplaceModifier", "texture_coordinates", "texture_coords"),
- ("EdgeSplitModifier", "use_sharp", "use_edge_sharp"),
- ("ExplodeModifier", "split_edges", "use_edge_split"),
- ("MirrorModifier", "merge_limit", "merge_threshold"),
- ("MirrorModifier", "mirror_u", "use_mirror_u"),
- ("MirrorModifier", "mirror_v", "use_mirror_v"),
- ("MirrorModifier", "mirror_vertex_groups", "use_mirror_vertex_groups"),
- ("ParticleInstanceModifier", "particle_system_number", "particle_system_index"),
- ("ParticleInstanceModifier", "keep_shape", "use_preserve_shape"),
- ("ShrinkwrapModifier", "cull_back_faces", "use_cull_back_faces"),
- ("ShrinkwrapModifier", "cull_front_faces", "use_cull_front_faces"),
- ("ShrinkwrapModifier", "keep_above_surface", "use_keep_above_surface"),
- ("SimpleDeformModifier", "lock_x_axis", "lock_x"),
- ("SimpleDeformModifier", "lock_y_axis", "lock_y"),
- ("SmokeModifier", "smoke_type", "type"),
- ("SubsurfModifier", "subsurf_uv", "use_subsurf_uv"),
- ("UVProjectModifier", "num_projectors", "projector_count"),
- ("UVProjectModifier", "override_image", "use_image_override"),
- ("WaveModifier", "texture_coordinates", "texture_coords"),
- ("WaveModifier", "x_normal", "use_normal_x"),
- ("WaveModifier", "y_normal", "use_normal_y"),
- ("WaveModifier", "z_normal", "use_normal_z"),
- ("NlaStrip", "blending", "blend_type"),
- ("NlaStrip", "animated_influence", "use_animated_influence"),
- ("NlaStrip", "animated_time", "use_animated_time"),
- ("NlaStrip", "animated_time_cyclic", "use_animated_time_cyclic"),
- ("NlaStrip", "auto_blending", "use_auto_blend"),
- ("CompositorNodeAlphaOver", "convert_premul", "use_premultiply"),
- ("CompositorNodeBlur", "sizex", "size_x"),
- ("CompositorNodeBlur", "sizey", "size_y"),
- ("CompositorNodeChannelMatte", "algorithm", "limit_method"),
- ("CompositorNodeChromaMatte", "acceptance", "tolerance"),
- ("CompositorNodeColorBalance", "correction_formula", "correction_method"),
- ("CompositorNodeColorSpill", "algorithm", "limit_method"),
- ("CompositorNodeColorSpill", "unspill", "use_unspill"),
- ("CompositorNodeCrop", "x2", "max_x"),
- ("CompositorNodeCrop", "y2", "max_y"),
- ("CompositorNodeCrop", "x1", "min_x"),
- ("CompositorNodeCrop", "y1", "min_y"),
- ("CompositorNodeCrop", "crop_size", "use_crop_size"),
- ("CompositorNodeDefocus", "max_blur", "blur_max"),
- ("CompositorNodeDefocus", "gamma_correction", "use_gamma_correction"),
- ("CompositorNodeGlare", "rotate_45", "use_rotate_45"),
- ("CompositorNodeImage", "auto_refresh", "use_auto_refresh"),
- ("CompositorNodeLensdist", "projector", "use_projector"),
- ("CompositorNodeVecBlur", "max_speed", "speed_max"),
- ("CompositorNodeVecBlur", "min_speed", "speed_min"),
- ("ShaderNodeMapping", "maximum", "max"),
- ("ShaderNodeMapping", "minimum", "min"),
- ("ShaderNodeMapping", "clamp_maximum", "use_max"),
- ("ShaderNodeMapping", "clamp_minimum", "use_min"),
- ("ParticleEdit", "add_keys", "default_key_count"),
- ("ParticleEdit", "selection_mode", "select_mode"),
- ("ParticleEdit", "auto_velocity", "use_auto_velocity"),
- ("ParticleEdit", "add_interpolate", "use_default_interpolate"),
- ("ParticleEdit", "emitter_deflect", "use_emitter_deflect"),
- ("ParticleEdit", "fade_time", "use_fade_time"),
- ("ParticleEdit", "keep_lengths", "use_preserve_length"),
- ("ParticleEdit", "keep_root", "use_preserve_root"),
- ("ParticleSystem", "vertex_group_clump_negate", "invert_vertex_group_clump"),
- ("ParticleSystem", "vertex_group_density_negate", "invert_vertex_group_density"),
- ("ParticleSystem", "vertex_group_field_negate", "invert_vertex_group_field"),
- ("ParticleSystem", "vertex_group_kink_negate", "invert_vertex_group_kink"),
- ("ParticleSystem", "vertex_group_length_negate", "invert_vertex_group_length"),
- ("ParticleSystem", "vertex_group_rotation_negate", "invert_vertex_group_rotation"),
- ("ParticleSystem", "vertex_group_roughness1_negate", "invert_vertex_group_roughness_1"),
- ("ParticleSystem", "vertex_group_roughness2_negate", "invert_vertex_group_roughness_2"),
- ("ParticleSystem", "vertex_group_roughness_end_negate", "invert_vertex_group_roughness_end"),
- ("ParticleSystem", "vertex_group_size_negate", "invert_vertex_group_size"),
- ("ParticleSystem", "vertex_group_tangent_negate", "invert_vertex_group_tangent"),
- ("ParticleSystem", "vertex_group_velocity_negate", "invert_vertex_group_velocity"),
- ("ParticleSystem", "hair_dynamics", "use_hair_dynamics"),
- ("ParticleSystem", "keyed_timing", "use_keyed_timing"),
- ("PointDensity", "falloff_softness", "falloff_soft"),
- ("PointDensity", "particle_cache", "particle_cache_space"),
- ("PointDensity", "turbulence_size", "turbulence_scale"),
- ("PointDensity", "turbulence", "use_turbulence"),
- ("PointDensity", "vertices_cache", "vertex_cache_space"),
- ("PoseBone", "ik_lin_weight", "ik_linear_weight"),
- ("PoseBone", "ik_rot_weight", "ik_rotation_weight"),
- ("PoseBone", "ik_limit_x", "use_ik_limit_x"),
- ("PoseBone", "ik_limit_y", "use_ik_limit_y"),
- ("PoseBone", "ik_limit_z", "use_ik_limit_z"),
- ("PoseBone", "ik_lin_control", "use_ik_linear_control"),
- ("PoseBone", "ik_rot_control", "use_ik_rotation_control"),
- ("Bone", "use_hinge", "use_inherit_rotation"),
- ("SPHFluidSettings", "spring_k", "spring_force"),
- ("SPHFluidSettings", "stiffness_k", "stiffness"),
- ("SPHFluidSettings", "stiffness_knear", "stiffness_near"),
- ("SceneGameData", "framing_color", "frame_color"),
- ("SceneGameData", "framing_type", "frame_type"),
- ("SceneGameData", "eye_separation", "stereo_eye_separation"),
- ("SceneGameData", "activity_culling", "use_activity_culling"),
- ("SceneGameData", "auto_start", "use_auto_start"),
- ("SceneGameData", "glsl_extra_textures", "use_glsl_extra_textures"),
- ("SceneGameData", "glsl_lights", "use_glsl_lights"),
- ("SceneGameData", "glsl_nodes", "use_glsl_nodes"),
- ("SceneGameData", "glsl_ramps", "use_glsl_ramps"),
- ("SceneGameData", "glsl_shaders", "use_glsl_shaders"),
- ("SceneGameData", "glsl_shadows", "use_glsl_shadows"),
- ("Sequence", "blend_opacity", "blend_alpha"),
- ("Sequence", "blend_mode", "blend_type"),
- ("Sequence", "frame_final_length", "frame_final_duration"),
- ("Sequence", "use_effect_default_fade", "use_default_fade"),
- ("SequenceColorBalance", "inverse_gain", "invert_gain"),
- ("SequenceColorBalance", "inverse_gamma", "invert_gamma"),
- ("SequenceColorBalance", "inverse_lift", "invert_lift"),
- ("EffectSequence", "multiply_colors", "color_multiply"),
- ("EffectSequence", "de_interlace", "use_deinterlace"),
- ("EffectSequence", "flip_x", "use_flip_x"),
- ("EffectSequence", "flip_y", "use_flip_y"),
- ("EffectSequence", "convert_float", "use_float"),
- ("EffectSequence", "premultiply", "use_premultiply"),
- ("EffectSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
- ("EffectSequence", "proxy_custom_file", "use_proxy_custom_file"),
- ("EffectSequence", "reverse_frames", "use_reverse_frames"),
- ("GlowSequence", "blur_distance", "blur_radius"),
- ("GlowSequence", "only_boost", "use_only_boost"),
- ("SpeedControlSequence", "curve_compress_y", "use_curve_compress_y"),
- ("SpeedControlSequence", "curve_velocity", "use_curve_velocity"),
- ("SpeedControlSequence", "frame_blending", "use_frame_blend"),
- ("TransformSequence", "uniform_scale", "use_uniform_scale"),
- ("ImageSequence", "animation_end_offset", "animation_offset_end"),
- ("ImageSequence", "animation_start_offset", "animation_offset_start"),
- ("ImageSequence", "multiply_colors", "color_multiply"),
- ("ImageSequence", "de_interlace", "use_deinterlace"),
- ("ImageSequence", "flip_x", "use_flip_x"),
- ("ImageSequence", "flip_y", "use_flip_y"),
- ("ImageSequence", "convert_float", "use_float"),
- ("ImageSequence", "premultiply", "use_premultiply"),
- ("ImageSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
- ("ImageSequence", "proxy_custom_file", "use_proxy_custom_file"),
- ("ImageSequence", "reverse_frames", "use_reverse_frames"),
- ("MetaSequence", "animation_end_offset", "animation_offset_end"),
- ("MetaSequence", "animation_start_offset", "animation_offset_start"),
- ("MetaSequence", "multiply_colors", "color_multiply"),
- ("MetaSequence", "de_interlace", "use_deinterlace"),
- ("MetaSequence", "flip_x", "use_flip_x"),
- ("MetaSequence", "flip_y", "use_flip_y"),
- ("MetaSequence", "convert_float", "use_float"),
- ("MetaSequence", "premultiply", "use_premultiply"),
- ("MetaSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
- ("MetaSequence", "proxy_custom_file", "use_proxy_custom_file"),
- ("MetaSequence", "reverse_frames", "use_reverse_frames"),
- ("MovieSequence", "animation_end_offset", "animation_offset_end"),
- ("MovieSequence", "animation_start_offset", "animation_offset_start"),
- ("MovieSequence", "multiply_colors", "color_multiply"),
- ("MovieSequence", "de_interlace", "use_deinterlace"),
- ("MovieSequence", "flip_x", "use_flip_x"),
- ("MovieSequence", "flip_y", "use_flip_y"),
- ("MovieSequence", "convert_float", "use_float"),
- ("MovieSequence", "premultiply", "use_premultiply"),
- ("MovieSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
- ("MovieSequence", "proxy_custom_file", "use_proxy_custom_file"),
- ("MovieSequence", "reverse_frames", "use_reverse_frames"),
- ("MulticamSequence", "animation_end_offset", "animation_offset_end"),
- ("MulticamSequence", "animation_start_offset", "animation_offset_start"),
- ("MulticamSequence", "multiply_colors", "color_multiply"),
- ("MulticamSequence", "de_interlace", "use_deinterlace"),
- ("MulticamSequence", "flip_x", "use_flip_x"),
- ("MulticamSequence", "flip_y", "use_flip_y"),
- ("MulticamSequence", "convert_float", "use_float"),
- ("MulticamSequence", "premultiply", "use_premultiply"),
- ("MulticamSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
- ("MulticamSequence", "proxy_custom_file", "use_proxy_custom_file"),
- ("MulticamSequence", "reverse_frames", "use_reverse_frames"),
- ("SceneSequence", "animation_end_offset", "animation_offset_end"),
- ("SceneSequence", "animation_start_offset", "animation_offset_start"),
- ("SceneSequence", "multiply_colors", "color_multiply"),
- ("SceneSequence", "de_interlace", "use_deinterlace"),
- ("SceneSequence", "flip_x", "use_flip_x"),
- ("SceneSequence", "flip_y", "use_flip_y"),
- ("SceneSequence", "convert_float", "use_float"),
- ("SceneSequence", "premultiply", "use_premultiply"),
- ("SceneSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
- ("SceneSequence", "proxy_custom_file", "use_proxy_custom_file"),
- ("SceneSequence", "reverse_frames", "use_reverse_frames"),
- ("SoundSequence", "animation_end_offset", "animation_offset_end"),
- ("SoundSequence", "animation_start_offset", "animation_offset_start"),
- ("SmokeDomainSettings", "smoke_domain_colli", "collision_extents"),
- ("SmokeDomainSettings", "smoke_cache_high_comp", "point_cache_compress_high_type"),
- ("SmokeDomainSettings", "smoke_cache_comp", "point_cache_compress_type"),
- ("SmokeDomainSettings", "maxres", "resolution_max"),
- ("SmokeDomainSettings", "smoothemitter", "smooth_emitter"),
- ("SmokeDomainSettings", "dissolve_smoke", "use_dissolve_smoke"),
- ("SmokeDomainSettings", "dissolve_smoke_log", "use_dissolve_smoke_log"),
- ("SmokeDomainSettings", "highres", "use_high_resolution"),
- ("SoftBodySettings", "bending", "bend"),
- ("SoftBodySettings", "error_limit", "error_threshold"),
- ("SoftBodySettings", "lcom", "location_mass_center"),
- ("SoftBodySettings", "lrot", "rotation_estimate"),
- ("SoftBodySettings", "lscale", "scale_estimate"),
- ("SoftBodySettings", "maxstep", "step_max"),
- ("SoftBodySettings", "minstep", "step_min"),
- ("SoftBodySettings", "diagnose", "use_diagnose"),
- ("SoftBodySettings", "edge_collision", "use_edge_collision"),
- ("SoftBodySettings", "estimate_matrix", "use_estimate_matrix"),
- ("SoftBodySettings", "face_collision", "use_face_collision"),
- ("SoftBodySettings", "self_collision", "use_self_collision"),
- ("SoftBodySettings", "stiff_quads", "use_stiff_quads"),
- ("TexMapping", "maximum", "max"),
- ("TexMapping", "minimum", "min"),
- ("TexMapping", "has_maximum", "use_max"),
- ("TexMapping", "has_minimum", "use_min"),
- ("TextCharacterFormat", "bold", "use_bold"),
- ("TextCharacterFormat", "italic", "use_italic"),
- ("TextCharacterFormat", "underline", "use_underline"),
- ("TextureSlot", "rgb_to_intensity", "use_rgb_to_intensity"),
- ("TextureSlot", "stencil", "use_stencil"),
- ("LampTextureSlot", "texture_coordinates", "texture_coords"),
- ("LampTextureSlot", "map_color", "use_map_color"),
- ("LampTextureSlot", "map_shadow", "use_map_shadow"),
- ("MaterialTextureSlot", "coloremission_factor", "color_emission_factor"),
- ("MaterialTextureSlot", "colordiff_factor", "diffuse_color_factor"),
- ("MaterialTextureSlot", "x_mapping", "mapping_x"),
- ("MaterialTextureSlot", "y_mapping", "mapping_y"),
- ("MaterialTextureSlot", "z_mapping", "mapping_z"),
- ("MaterialTextureSlot", "colorreflection_factor", "reflection_color_factor"),
- ("MaterialTextureSlot", "colorspec_factor", "specular_color_factor"),
- ("MaterialTextureSlot", "texture_coordinates", "texture_coords"),
- ("MaterialTextureSlot", "colortransmission_factor", "transmission_color_factor"),
- ("MaterialTextureSlot", "from_dupli", "use_from_dupli"),
- ("MaterialTextureSlot", "from_original", "use_from_original"),
- ("MaterialTextureSlot", "map_alpha", "use_map_alpha"),
- ("MaterialTextureSlot", "map_ambient", "use_map_ambient"),
- ("MaterialTextureSlot", "map_colordiff", "use_map_color_diff"),
- ("MaterialTextureSlot", "map_coloremission", "use_map_color_emission"),
- ("MaterialTextureSlot", "map_colorreflection", "use_map_color_reflection"),
- ("MaterialTextureSlot", "map_colorspec", "use_map_color_spec"),
- ("MaterialTextureSlot", "map_colortransmission", "use_map_color_transmission"),
- ("MaterialTextureSlot", "map_density", "use_map_density"),
- ("MaterialTextureSlot", "map_diffuse", "use_map_diffuse"),
- ("MaterialTextureSlot", "map_displacement", "use_map_displacement"),
- ("MaterialTextureSlot", "map_emission", "use_map_emission"),
- ("MaterialTextureSlot", "map_emit", "use_map_emit"),
- ("MaterialTextureSlot", "map_hardness", "use_map_hardness"),
- ("MaterialTextureSlot", "map_mirror", "use_map_mirror"),
- ("MaterialTextureSlot", "map_normal", "use_map_normal"),
- ("MaterialTextureSlot", "map_raymir", "use_map_raymir"),
- ("MaterialTextureSlot", "map_reflection", "use_map_reflect"),
- ("MaterialTextureSlot", "map_scattering", "use_map_scatter"),
- ("MaterialTextureSlot", "map_specular", "use_map_specular"),
- ("MaterialTextureSlot", "map_translucency", "use_map_translucency"),
- ("MaterialTextureSlot", "map_warp", "use_map_warp"),
- ("WorldTextureSlot", "texture_coordinates", "texture_coords"),
- ("WorldTextureSlot", "map_blend", "use_map_blend"),
- ("WorldTextureSlot", "map_horizon", "use_map_horizon"),
- ("WorldTextureSlot", "map_zenith_down", "use_map_zenith_down"),
- ("WorldTextureSlot", "map_zenith_up", "use_map_zenith_up"),
- ("VoxelData", "still_frame_number", "still_frame"),
- ("WorldLighting", "ao_blend_mode", "ao_blend_type"),
- ("WorldLighting", "error_tolerance", "error_threshold"),
- ("WorldLighting", "use_ambient_occlusion", "use_ambient_occlusian"),
- ("WorldLighting", "pixel_cache", "use_cache"),
- ("WorldLighting", "use_environment_lighting", "use_environment_light"),
- ("WorldLighting", "use_indirect_lighting", "use_indirect_light"),
- ("WorldStarsSettings", "color_randomization", "color_random"),
- ("WorldStarsSettings", "min_distance", "distance_min"),
- ("WorldLighting", "falloff", "use_falloff"),
- ("Constraint", "disabled", "is_valid"),
- ("ClampToConstraint", "cyclic", "use_cyclic"),
- ("ImageTexture", "filter", "filter_type"),
- ("ImageTexture", "interpolation", "use_interpolation"),
- ("ImageTexture", "mipmap", "use_mipmap"),
- ("ImageUser", "frames", "frame_duration"),
- ("ImageUser", "offset", "frame_offset"),
- ("ImageUser", "cyclic", "use_cyclic"),
- ("ArmatureModifier", "invert", "invert_vertex_group"),
- ("ArmatureModifier", "quaternion", "use_deform_preserve_volume"),
- ("ArrayModifier", "length", "fit_length"),
- ("BevelModifier", "angle", "angle_limit"),
- ("BuildModifier", "length", "frame_duration"),
- ("BuildModifier", "randomize", "use_random_order"),
- ("CastModifier", "x", "use_x"),
- ("CastModifier", "y", "use_y"),
- ("CastModifier", "z", "use_z"),
- ("ExplodeModifier", "size", "use_size"),
- ("MaskModifier", "invert", "invert_vertex_group"),
- ("MeshDeformModifier", "invert", "invert_vertex_group"),
- ("MeshDeformModifier", "dynamic", "use_dynamic_bind"),
- ("MirrorModifier", "clip", "use_clip"),
- ("MirrorModifier", "x", "use_x"),
- ("MirrorModifier", "y", "use_y"),
- ("MirrorModifier", "z", "use_z"),
- ("ParticleInstanceModifier", "children", "use_children"),
- ("ParticleInstanceModifier", "normal", "use_normal"),
- ("ParticleInstanceModifier", "size", "use_size"),
- ("ShrinkwrapModifier", "negative", "use_negative_direction"),
- ("ShrinkwrapModifier", "positive", "use_positive_direction"),
- ("ShrinkwrapModifier", "x", "use_project_x"),
- ("ShrinkwrapModifier", "y", "use_project_y"),
- ("ShrinkwrapModifier", "z", "use_project_z"),
- ("ShrinkwrapModifier", "mode", "wrap_method"),
- ("SimpleDeformModifier", "mode", "deform_method"),
- ("SimpleDeformModifier", "relative", "use_relative"),
- ("SmoothModifier", "repeat", "iterations"),
- ("SmoothModifier", "x", "use_x"),
- ("SmoothModifier", "y", "use_y"),
- ("SmoothModifier", "z", "use_z"),
- ("SolidifyModifier", "invert", "invert_vertex_group"),
- ("WaveModifier", "cyclic", "use_cyclic"),
- ("WaveModifier", "normals", "use_normal"),
- ("WaveModifier", "x", "use_x"),
- ("WaveModifier", "y", "use_y"),
- ("DampedTrackConstraint", "track", "track_axis"),
- ("FloorConstraint", "sticky", "use_sticky"),
- ("FollowPathConstraint", "forward", "forward_axis"),
- ("FollowPathConstraint", "up", "up_axis"),
- ("LockedTrackConstraint", "lock", "lock_axis"),
- ("LockedTrackConstraint", "track", "track_axis"),
- ("MaintainVolumeConstraint", "axis", "free_axis"),
- ("TrackToConstraint", "track", "track_axis"),
- ("TrackToConstraint", "up", "up_axis"),
- ("GameProperty", "debug", "show_debug"),
- ("Image", "tiles", "use_tiles"),
- ("Lamp", "diffuse", "use_diffuse"),
- ("Lamp", "negative", "use_negative"),
- ("Lamp", "layer", "use_own_layer"),
- ("Lamp", "specular", "use_specular"),
- ("AreaLamp", "dither", "use_dither"),
- ("AreaLamp", "jitter", "use_jitter"),
- ("SpotLamp", "square", "use_square"),
- ("Material", "cubic", "use_cubic"),
- ("Material", "shadows", "use_shadows"),
- ("ParticleSettings", "amount", "count"),
- ("ParticleSettings", "display", "draw_percentage"),
- ("ParticleSettings", "velocity", "show_velocity"),
- ("ParticleSettings", "trand", "use_emit_random"),
- ("ParticleSettings", "parent", "use_parent_particles"),
- ("ParticleSettings", "emitter", "use_render_emitter"),
- ("ParticleSettings", "viewport", "use_simplify_viewport"),
- ("Texture", "brightness", "intensity"),
- ("CloudsTexture", "stype", "cloud_type"),
- ("EnvironmentMapTexture", "filter", "filter_type"),
- ("EnvironmentMapTexture", "mipmap", "use_mipmap"),
- ("MarbleTexture", "stype", "marble_type"),
- ("StucciTexture", "stype", "stucci_type"),
- ("WoodTexture", "stype", "wood_type"),
- ("World", "range", "color_range"),
- ("World", "lighting", "light_settings"),
- ("World", "mist", "mist_settings"),
- ("World", "stars", "star_settings"),
- ("MaterialHalo", "lines", "use_lines"),
- ("MaterialHalo", "ring", "use_ring"),
- ("MaterialHalo", "soft", "use_soft"),
- ("MaterialHalo", "star", "use_star"),
- ("MaterialHalo", "texture", "use_texture"),
- ("MaterialPhysics", "damp", "damping"),
- ("MaterialRaytraceTransparency", "limit", "depth_max"),
- ("NlaStrip", "reversed", "use_reverse"),
- ("CompositorNodeBlur", "bokeh", "use_bokeh"),
- ("CompositorNodeBlur", "gamma", "use_gamma_correction"),
- ("CompositorNodeBlur", "relative", "use_relative"),
- ("CompositorNodeChannelMatte", "high", "limit_max"),
- ("CompositorNodeChannelMatte", "low", "limit_min"),
- ("CompositorNodeChannelMatte", "channel", "matte_channel"),
- ("CompositorNodeChromaMatte", "cutoff", "threshold"),
- ("CompositorNodeColorMatte", "h", "color_hue"),
- ("CompositorNodeColorMatte", "s", "color_saturation"),
- ("CompositorNodeColorMatte", "v", "color_value"),
- ("CompositorNodeDBlur", "wrap", "use_wrap"),
- ("CompositorNodeDefocus", "preview", "use_preview"),
- ("CompositorNodeHueSat", "hue", "color_hue"),
- ("CompositorNodeHueSat", "sat", "color_saturation"),
- ("CompositorNodeHueSat", "val", "color_value"),
- ("CompositorNodeImage", "frames", "frame_duration"),
- ("CompositorNodeImage", "offset", "frame_offset"),
- ("CompositorNodeImage", "start", "frame_start"),
- ("CompositorNodeImage", "cyclic", "use_cyclic"),
- ("CompositorNodeInvert", "alpha", "invert_alpha"),
- ("CompositorNodeInvert", "rgb", "invert_rgb"),
- ("CompositorNodeLensdist", "fit", "use_fit"),
- ("CompositorNodeLensdist", "jitter", "use_jitter"),
- ("CompositorNodeMixRGB", "alpha", "use_alpha"),
- ("CompositorNodeRotate", "filter", "filter_type"),
- ("CompositorNodeTime", "end", "frame_end"),
- ("CompositorNodeTime", "start", "frame_start"),
- ("CompositorNodeVecBlur", "curved", "use_curved"),
- ("ShaderNodeExtendedMaterial", "diffuse", "use_diffuse"),
- ("ShaderNodeExtendedMaterial", "specular", "use_specular"),
- ("ShaderNodeMaterial", "diffuse", "use_diffuse"),
- ("ShaderNodeMaterial", "specular", "use_specular"),
- ("ShaderNodeMixRGB", "alpha", "use_alpha"),
- ("TextureNodeCurveTime", "end", "frame_end"),
- ("TextureNodeCurveTime", "start", "frame_start"),
- ("TextureNodeMixRGB", "alpha", "use_alpha"),
- ("TextureSlot", "negate", "invert"),
- ("TextureSlot", "size", "scale"),
- ("SoftBodySettings", "damp", "damping"),
- ("SequenceCrop", "right", "max_x"),
- ("SequenceCrop", "top", "max_y"),
- ("SequenceCrop", "bottom", "min_x"),
- ("SequenceCrop", "left", "min_y"),
- ("Sequence", "speed_fader", "speed_factor"),
- ("SpeedControlSequence", "global_speed", "multiply_speed"),
- ("SpeedControlSequence", "use_curve_velocity", "use_as_speed"),
- ("SpeedControlSequence", "use_curve_compress_y", "scale_to_length"),
- ("Key", "keys", "key_blocks"),
- )
-
-
if __name__ == "__main__":
# Example, should be called externally
diff --git a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
index e9ed9a8de5b..429fea60d7a 100644
--- a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
+++ b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
@@ -791,10 +791,10 @@ def dump_src_messages(msgs, reports, settings):
##### Main functions! #####
def dump_messages(do_messages, do_checks, settings):
bl_ver = "Blender " + bpy.app.version_string
- bl_rev = bpy.app.build_revision
+ bl_hash = bpy.app.build_hash or b'0000000000000000000000000000000000000000'
bl_date = datetime.datetime.strptime(bpy.app.build_date.decode() + "T" + bpy.app.build_time.decode(),
"%Y-%m-%dT%H:%M:%S")
- pot = utils.I18nMessages.gen_empty_messages(settings.PARSER_TEMPLATE_ID, bl_ver, bl_rev, bl_date, bl_date.year,
+ pot = utils.I18nMessages.gen_empty_messages(settings.PARSER_TEMPLATE_ID, bl_ver, bl_hash, bl_date, bl_date.year,
settings=settings)
msgs = pot.msgs
diff --git a/release/scripts/modules/bl_i18n_utils/merge_po.py b/release/scripts/modules/bl_i18n_utils/merge_po.py
index 610be0f15bd..d7dade22ffd 100755
--- a/release/scripts/modules/bl_i18n_utils/merge_po.py
+++ b/release/scripts/modules/bl_i18n_utils/merge_po.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
# ***** BEGIN GPL LICENSE BLOCK *****
#
diff --git a/release/scripts/modules/bl_i18n_utils/settings.py b/release/scripts/modules/bl_i18n_utils/settings.py
index e40b067f552..300cd7ae955 100644
--- a/release/scripts/modules/bl_i18n_utils/settings.py
+++ b/release/scripts/modules/bl_i18n_utils/settings.py
@@ -146,7 +146,7 @@ PO_MSGSTR = "msgstr "
PO_HEADER_KEY = (DEFAULT_CONTEXT, "")
PO_HEADER_MSGSTR = (
- "Project-Id-Version: {blender_ver} (r{blender_rev})\\n\n"
+ "Project-Id-Version: {blender_ver} ({blender_hash})\\n\n"
"Report-Msgid-Bugs-To: \\n\n"
"POT-Creation-Date: {time}\\n\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\n"
@@ -257,6 +257,16 @@ PYGETTEXT_KEYWORDS = (() +
for it in ("BLF_I18N_MSGID_MULTI_CTXT",))
)
+# Check printf mismatches between msgid and msgstr.
+CHECK_PRINTF_FORMAT = (
+ r"(?!<%)(?:%%)*%" # Begining, with handling for crazy things like '%%%%%s'
+ r"[-+#0]?" # Flags (note: do not add the ' ' (space) flag here, generates too much false positives!)
+ r"(?:\*|[0-9]+)?" # Width
+ r"(?:\.(?:\*|[0-9]+))?" # Precision
+ r"(?:[hljztL]|hh|ll)?" # Length
+ r"[tldiuoxXfFeEgGaAcspn]" # Specifiers (note we have Blender-specific %t and %l ones too)
+)
+
# Should po parser warn when finding a first letter not capitalized?
WARN_MSGID_NOT_CAPITALIZED = True
diff --git a/release/scripts/modules/bl_i18n_utils/utils.py b/release/scripts/modules/bl_i18n_utils/utils.py
index 1b6d65d89d0..53146fd0287 100644
--- a/release/scripts/modules/bl_i18n_utils/utils.py
+++ b/release/scripts/modules/bl_i18n_utils/utils.py
@@ -408,10 +408,10 @@ class I18nMessages:
return getattr(collections, 'OrderedDict', dict)()
@classmethod
- def gen_empty_messages(cls, uid, blender_ver, blender_rev, time, year, default_copyright=True, settings=settings):
+ def gen_empty_messages(cls, uid, blender_ver, blender_hash, time, year, default_copyright=True, settings=settings):
"""Generate an empty I18nMessages object (only header is present!)."""
fmt = settings.PO_HEADER_MSGSTR
- msgstr = fmt.format(blender_ver=str(blender_ver), blender_rev=int(blender_rev), time=str(time), uid=str(uid))
+ msgstr = fmt.format(blender_ver=str(blender_ver), blender_hash=blender_hash, time=str(time), uid=str(uid))
comment = ""
if default_copyright:
comment = settings.PO_HEADER_COMMENT_COPYRIGHT.format(year=str(year))
@@ -446,10 +446,10 @@ class I18nMessages:
"""
ret = []
default_context = self.settings.DEFAULT_CONTEXT
- _format = re.compile("%[.0-9]*[tslfd]").findall
+ _format = re.compile(self.settings.CHECK_PRINTF_FORMAT).findall
done_keys = set()
- tmp = {}
rem = set()
+ tmp = {}
for key, msg in self.msgs.items():
msgctxt, msgid, msgstr = msg.msgctxt, msg.msgid, msg.msgstr
real_key = (msgctxt or default_context, msgid)
@@ -462,9 +462,10 @@ class I18nMessages:
elif fix:
tmp[real_key] = msg
done_keys.add(key)
- if '%' in msgid and msgstr and len(_format(msgid)) != len(_format(msgstr)):
+ if '%' in msgid and msgstr and _format(msgid) != _format(msgstr):
if not msg.is_fuzzy:
- ret.append("Error! msg's format entities are not matched in msgid and msgstr ({})".format(real_key))
+ ret.append("Error! msg's format entities are not matched in msgid and msgstr ({} / \"{}\")"
+ "".format(real_key, msgstr))
if fix:
msg.msgstr = ""
for k in rem:
diff --git a/release/scripts/modules/bl_i18n_utils/utils_rtl.py b/release/scripts/modules/bl_i18n_utils/utils_rtl.py
index 0544f93a262..f08d7efdb8e 100755
--- a/release/scripts/modules/bl_i18n_utils/utils_rtl.py
+++ b/release/scripts/modules/bl_i18n_utils/utils_rtl.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
# ***** BEGIN GPL LICENSE BLOCK *****
#
diff --git a/release/scripts/modules/blend_render_info.py b/release/scripts/modules/blend_render_info.py
index d08b9e09dda..a62eaeea143 100755
--- a/release/scripts/modules/blend_render_info.py
+++ b/release/scripts/modules/blend_render_info.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
# ##### BEGIN GPL LICENSE BLOCK #####
#
diff --git a/release/scripts/modules/bpy/path.py b/release/scripts/modules/bpy/path.py
index da1a52e560d..ccc9df93b0d 100644
--- a/release/scripts/modules/bpy/path.py
+++ b/release/scripts/modules/bpy/path.py
@@ -321,7 +321,7 @@ def reduce_dirs(dirs):
"""
dirs = list({_os.path.normpath(_os.path.abspath(d)) for d in dirs})
dirs.sort(key=lambda d: len(d))
- for i in range(len(dirs) -1, -1, -1):
+ for i in range(len(dirs) - 1, -1, -1):
for j in range(i):
print(i, j)
if len(dirs[i]) == len(dirs[j]):
diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py
index ab35d774719..608cd920865 100644
--- a/release/scripts/modules/bpy/utils.py
+++ b/release/scripts/modules/bpy/utils.py
@@ -677,7 +677,7 @@ def make_rna_paths(struct_name, prop_name, enum_name):
if prop_name:
src = src_rna = ".".join((struct_name, prop_name))
if enum_name:
- src = src_enum = "{}:'{}'".format(src_rna, enum_name)
+ src = src_enum = "%s:'%s'" % (src_rna, enum_name)
else:
src = src_rna = struct_name
return src, src_rna, src_enum
diff --git a/release/scripts/modules/bpy_extras/keyconfig_utils.py b/release/scripts/modules/bpy_extras/keyconfig_utils.py
index 1baab5654c6..4b673b2e0de 100644
--- a/release/scripts/modules/bpy_extras/keyconfig_utils.py
+++ b/release/scripts/modules/bpy_extras/keyconfig_utils.py
@@ -151,7 +151,7 @@ def keyconfig_merge(kc1, kc2):
return merged_keymaps
-def _export_properties(prefix, properties, lines=None):
+def _export_properties(prefix, properties, kmi_id, lines=None):
from bpy.types import OperatorProperties
if lines is None:
@@ -171,20 +171,58 @@ def _export_properties(prefix, properties, lines=None):
if pname != "rna_type":
value = getattr(properties, pname)
if isinstance(value, OperatorProperties):
- _export_properties(prefix + "." + pname, value, lines)
+ _export_properties(prefix + "." + pname, value, kmi_id, lines)
elif properties.is_property_set(pname):
value = string_value(value)
if value != "":
- lines.append("%s.%s = %s\n" % (prefix, pname, value))
+ lines.append("set_kmi_prop(%s, '%s', %s, '%s')\n" % (prefix, pname, value, kmi_id))
return lines
+def _kmistr(kmi, is_modal):
+ if is_modal:
+ kmi_id = kmi.propvalue
+ kmi_newfunc = 'new_modal'
+ else:
+ kmi_id = kmi.idname
+ kmi_newfunc = 'new'
+ s = ["kmi = km.keymap_items.%s(\'%s\', \'%s\', \'%s\'" % (kmi_newfunc, kmi_id, kmi.type, kmi.value)]
+
+ if kmi.any:
+ s.append(", any=True")
+ else:
+ if kmi.shift:
+ s.append(", shift=True")
+ if kmi.ctrl:
+ s.append(", ctrl=True")
+ if kmi.alt:
+ s.append(", alt=True")
+ if kmi.oskey:
+ s.append(", oskey=True")
+ if kmi.key_modifier and kmi.key_modifier != 'NONE':
+ s.append(", key_modifier=\'%s\'" % kmi.key_modifier)
+
+ s.append(")\n")
+
+ props = kmi.properties
+
+ if props is not None:
+ _export_properties("kmi.properties", props, kmi_id, s)
+
+ return "".join(s)
+
+
def keyconfig_export(wm, kc, filepath):
f = open(filepath, "w")
f.write("import bpy\n")
f.write("import os\n\n")
+ f.write("def set_kmi_prop(kmiprops, prop, value, kmiid):\n"
+ " if hasattr(kmiprops, prop):\n"
+ " setattr(kmiprops, prop, value)\n"
+ " else:\n"
+ " print(\"Warning: property '%s' not found in keymap item '%s'\" % (prop, kmiid))\n\n")
f.write("wm = bpy.context.window_manager\n")
f.write("kc = wm.keyconfigs.new(os.path.splitext(os.path.basename(__file__))[0])\n\n") # keymap must be created by caller
@@ -216,30 +254,7 @@ def keyconfig_export(wm, kc, filepath):
f.write("# Map %s\n" % km.name)
f.write("km = kc.keymaps.new('%s', space_type='%s', region_type='%s', modal=%s)\n\n" % (km.name, km.space_type, km.region_type, km.is_modal))
for kmi in km.keymap_items:
- if km.is_modal:
- f.write("kmi = km.keymap_items.new_modal('%s', '%s', '%s'" % (kmi.propvalue, kmi.type, kmi.value))
- else:
- f.write("kmi = km.keymap_items.new('%s', '%s', '%s'" % (kmi.idname, kmi.type, kmi.value))
- if kmi.any:
- f.write(", any=True")
- else:
- if kmi.shift:
- f.write(", shift=True")
- if kmi.ctrl:
- f.write(", ctrl=True")
- if kmi.alt:
- f.write(", alt=True")
- if kmi.oskey:
- f.write(", oskey=True")
- if kmi.key_modifier and kmi.key_modifier != 'NONE':
- f.write(", key_modifier='%s'" % kmi.key_modifier)
- f.write(")\n")
-
- props = kmi.properties
-
- if props is not None:
- f.write("".join(_export_properties("kmi.properties", props)))
-
+ f.write(_kmistr(kmi, km.is_modal))
f.write("\n")
f.close()
@@ -250,50 +265,22 @@ def keyconfig_test(kc):
def testEntry(kc, entry, src=None, parent=None):
result = False
- def kmistr(kmi):
- if km.is_modal:
- s = ["kmi = km.keymap_items.new_modal(\'%s\', \'%s\', \'%s\'" % (kmi.propvalue, kmi.type, kmi.value)]
- else:
- s = ["kmi = km.keymap_items.new(\'%s\', \'%s\', \'%s\'" % (kmi.idname, kmi.type, kmi.value)]
-
- if kmi.any:
- s.append(", any=True")
- else:
- if kmi.shift:
- s.append(", shift=True")
- if kmi.ctrl:
- s.append(", ctrl=True")
- if kmi.alt:
- s.append(", alt=True")
- if kmi.oskey:
- s.append(", oskey=True")
- if kmi.key_modifier and kmi.key_modifier != 'NONE':
- s.append(", key_modifier=\'%s\'" % kmi.key_modifier)
-
- s.append(")\n")
-
- props = kmi.properties
-
- if props is not None:
- _export_properties("kmi.properties", props, s)
-
- return "".join(s).strip()
-
idname, spaceid, regionid, children = entry
km = kc.keymaps.find(idname, space_type=spaceid, region_type=regionid)
if km:
km = km.active()
+ is_modal = km.is_modal
if src:
for item in km.keymap_items:
if src.compare(item):
print("===========")
print(parent.name)
- print(kmistr(src))
+ print(_kmistr(src, is_modal).strip())
print(km.name)
- print(kmistr(item))
+ print(_kmistr(item, is_modal).strip())
result = True
for child in children:
@@ -312,8 +299,8 @@ def keyconfig_test(kc):
if src.compare(item):
print("===========")
print(km.name)
- print(kmistr(src))
- print(kmistr(item))
+ print(_kmistr(src, is_modal).strip())
+ print(_kmistr(item, is_modal).strip())
result = True
for child in children:
diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py
index 7ce5aff581a..a14f0128444 100644
--- a/release/scripts/modules/bpy_extras/object_utils.py
+++ b/release/scripts/modules/bpy_extras/object_utils.py
@@ -201,6 +201,10 @@ class AddObjectHelper:
subtype='EULER',
)
+ @classmethod
+ def poll(self, context):
+ return context.scene.library is None
+
def object_add_grid_scale(context):
"""
diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py
index 60b11884e30..3643ad89ea6 100644
--- a/release/scripts/modules/rna_info.py
+++ b/release/scripts/modules/rna_info.py
@@ -98,6 +98,7 @@ class InfoStructRNA:
)
global_lookup = {}
+
def __init__(self, rna_type):
self.bl_rna = rna_type
diff --git a/release/scripts/modules/sys_info.py b/release/scripts/modules/sys_info.py
index ea75bfde809..83f2647c5b2 100644
--- a/release/scripts/modules/sys_info.py
+++ b/release/scripts/modules/sys_info.py
@@ -67,7 +67,20 @@ def write_sysinfo(op):
# build info
output.write("\nBlender:\n")
output.write(lilies)
- output.write("version %s, revision %r. %r\n" % (bpy.app.version_string, bpy.app.build_revision, bpy.app.build_type))
+ if bpy.app.build_branch and bpy.app.build_branch != "Unknown":
+ output.write("version %s, branch %r, commit date %r %r, hash %r, %r\n" %
+ (bpy.app.version_string,
+ bpy.app.build_branch,
+ bpy.app.build_commit_date,
+ bpy.app.build_commit_time,
+ bpy.app.build_hash,
+ bpy.app.build_type))
+ else:
+ output.write("version %s, revision %r. %r\n" %
+ (bpy.app.version_string,
+ bpy.app.build_change,
+ bpy.app.build_type))
+
output.write("build date: %r, %r\n" % (bpy.app.build_date, bpy.app.build_time))
output.write("platform: %r\n" % (bpy.app.build_platform))
output.write("binary path: %r\n" % (bpy.app.binary_path))
diff --git a/release/scripts/presets/keyconfig/3dsmax.py b/release/scripts/presets/keyconfig/3dsmax.py
index 42a928cf80f..f484ecd44b5 100644
--- a/release/scripts/presets/keyconfig/3dsmax.py
+++ b/release/scripts/presets/keyconfig/3dsmax.py
@@ -255,7 +255,8 @@ kmi.properties.direction = 'CHILD'
kmi.properties.extend = True
kmi = km.keymap_items.new('pose.select_linked', 'L', 'PRESS', alt=True)
kmi = km.keymap_items.new('pose.select_grouped', 'G', 'PRESS', shift=True)
-kmi = km.keymap_items.new('pose.select_flip_active', 'F', 'PRESS', shift=True)
+kmi = km.keymap_items.new('pose.select_mirror', 'F', 'PRESS', shift=True)
+kmi.properties.only_active = True
kmi = km.keymap_items.new('pose.constraint_add_with_targets', 'C', 'PRESS', shift=True, ctrl=True)
kmi = km.keymap_items.new('pose.constraints_clear', 'C', 'PRESS', ctrl=True, alt=True)
kmi = km.keymap_items.new('pose.ik_add', 'I', 'PRESS', shift=True)
@@ -686,7 +687,7 @@ kmi = km.keymap_items.new('transform.translate', 'W', 'PRESS', shift=True)
kmi = km.keymap_items.new('transform.translate', 'EVT_TWEAK_S', 'ANY')
kmi = km.keymap_items.new('transform.rotate', 'E', 'PRESS', shift=True)
kmi = km.keymap_items.new('transform.resize', 'R', 'PRESS', shift=True)
-kmi = km.keymap_items.new('transform.warp', 'Q', 'PRESS', shift=True)
+kmi = km.keymap_items.new('transform.bend', 'Q', 'PRESS', shift=True)
kmi = km.keymap_items.new('transform.tosphere', 'S', 'PRESS', shift=True, alt=True)
kmi = km.keymap_items.new('transform.shear', 'S', 'PRESS', shift=True, ctrl=True, alt=True)
kmi = km.keymap_items.new('transform.select_orientation', 'SPACE', 'PRESS', alt=True)
@@ -1062,7 +1063,6 @@ kmi = km.keymap_items.new('node.hide_toggle', 'H', 'PRESS')
kmi = km.keymap_items.new('node.mute_toggle', 'M', 'PRESS')
kmi = km.keymap_items.new('node.preview_toggle', 'H', 'PRESS', shift=True)
kmi = km.keymap_items.new('node.hide_socket_toggle', 'H', 'PRESS', ctrl=True)
-kmi = km.keymap_items.new('node.show_cyclic_dependencies', 'C', 'PRESS')
kmi = km.keymap_items.new('node.view_all', 'HOME', 'PRESS')
kmi = km.keymap_items.new('node.view_selected', 'NUMPAD_PERIOD', 'PRESS')
kmi = km.keymap_items.new('node.select_border', 'B', 'PRESS')
diff --git a/release/scripts/presets/keyconfig/maya.py b/release/scripts/presets/keyconfig/maya.py
index 21fd757c4e5..1b8648731aa 100644
--- a/release/scripts/presets/keyconfig/maya.py
+++ b/release/scripts/presets/keyconfig/maya.py
@@ -315,7 +315,8 @@ kmi.properties.direction = 'CHILD'
kmi.properties.extend = True
kmi = km.keymap_items.new('pose.select_linked', 'L', 'PRESS')
kmi = km.keymap_items.new('pose.select_grouped', 'G', 'PRESS', shift=True)
-kmi = km.keymap_items.new('pose.select_flip_active', 'F', 'PRESS', shift=True)
+kmi = km.keymap_items.new('pose.select_mirror', 'F', 'PRESS', shift=True)
+kmi.properties.only_active = True
kmi = km.keymap_items.new('pose.constraint_add_with_targets', 'C', 'PRESS', shift=True, ctrl=True)
kmi = km.keymap_items.new('pose.constraints_clear', 'C', 'PRESS', ctrl=True, alt=True)
kmi = km.keymap_items.new('pose.ik_add', 'I', 'PRESS', shift=True)
@@ -697,8 +698,10 @@ km = kc.keymaps.new('Knife Tool Modal Map', space_type='EMPTY', region_type='WIN
kmi = km.keymap_items.new_modal('CANCEL', 'ESC', 'ANY', any=True)
kmi = km.keymap_items.new_modal('PANNING', 'LEFTMOUSE', 'ANY', alt=True)
+kmi = km.keymap_items.new_modal('PANNING', 'MIDDLEMOUSE', 'ANY', alt=True)
+kmi = km.keymap_items.new_modal('PANNING', 'RIGHTMOUSE', 'ANY', alt=True)
kmi = km.keymap_items.new_modal('ADD_CUT', 'LEFTMOUSE', 'PRESS', any=True)
-kmi = km.keymap_items.new_modal('CANCEL', 'RIGHTMOUSE', 'ANY', any=True)
+kmi = km.keymap_items.new_modal('CANCEL', 'RIGHTMOUSE', 'ANY')
kmi = km.keymap_items.new_modal('CONFIRM', 'RET', 'PRESS', any=True)
kmi = km.keymap_items.new_modal('CONFIRM', 'NUMPAD_ENTER', 'PRESS', any=True)
kmi = km.keymap_items.new_modal('CONFIRM', 'SPACE', 'PRESS', any=True)
@@ -1474,7 +1477,6 @@ kmi = km.keymap_items.new('node.hide_toggle', 'H', 'PRESS', ctrl=True)
kmi = km.keymap_items.new('node.mute_toggle', 'M', 'PRESS')
kmi = km.keymap_items.new('node.preview_toggle', 'H', 'PRESS', shift=True)
kmi = km.keymap_items.new('node.hide_socket_toggle', 'H', 'PRESS', shift=True, ctrl=True)
-kmi = km.keymap_items.new('node.show_cyclic_dependencies', 'C', 'PRESS')
kmi = km.keymap_items.new('node.view_all', 'A', 'PRESS')
kmi = km.keymap_items.new('node.delete', 'BACK_SPACE', 'PRESS')
kmi = km.keymap_items.new('node.delete', 'DEL', 'PRESS')
@@ -1587,8 +1589,11 @@ kmi = km.keymap_items.new('action.view_all', 'A', 'PRESS')
kmi = km.keymap_items.new('action.view_selected', 'F', 'PRESS')
kmi = km.keymap_items.new('anim.channels_editable_toggle', 'TAB', 'PRESS')
kmi = km.keymap_items.new('transform.transform', 'W', 'PRESS')
+kmi.properties.mode = 'TIME_TRANSLATE'
kmi = km.keymap_items.new('transform.transform', 'EVT_TWEAK_M', 'ANY')
+kmi.properties.mode = 'TIME_TRANSLATE'
kmi = km.keymap_items.new('transform.transform', 'S', 'PRESS')
+kmi.properties.mode = 'TIME_SCALE'
kmi = km.keymap_items.new('transform.transform', 'T', 'PRESS', shift=True)
kmi = km.keymap_items.new('marker.add', 'M', 'PRESS')
kmi = km.keymap_items.new('marker.rename', 'M', 'PRESS', ctrl=True)
@@ -1662,6 +1667,7 @@ kmi = km.keymap_items.new('nla.fmodifier_add', 'M', 'PRESS', shift=True, ctrl=Tr
kmi = km.keymap_items.new('transform.transform', 'W', 'PRESS')
kmi = km.keymap_items.new('transform.transform', 'EVT_TWEAK_M', 'ANY')
kmi = km.keymap_items.new('transform.transform', 'R', 'PRESS')
+kmi.properties.mode = 'TIME_SCALE'
kmi = km.keymap_items.new('marker.add', 'M', 'PRESS')
kmi = km.keymap_items.new('marker.rename', 'M', 'PRESS', ctrl=True)
kmi = km.keymap_items.new('nla.select_all_toggle', 'LEFTMOUSE', 'DOUBLE_CLICK')
diff --git a/release/scripts/startup/bl_operators/anim.py b/release/scripts/startup/bl_operators/anim.py
index 6193611504e..41f39b90464 100644
--- a/release/scripts/startup/bl_operators/anim.py
+++ b/release/scripts/startup/bl_operators/anim.py
@@ -281,15 +281,3 @@ class ClearUselessActions(Operator):
self.report({'INFO'}, "Removed %d empty and/or fake-user only Actions"
% removed)
return {'FINISHED'}
-
-
-class UpdateAnimData(Operator):
- """Update data paths from 2.56 and previous versions, """ \
- """modifying data paths of drivers and fcurves"""
- bl_idname = "anim.update_data_paths"
- bl_label = "Update Animation Data"
-
- def execute(self, context):
- import animsys_refactor
- animsys_refactor.update_data_paths(animsys_refactor.data_2_56_to_2_59)
- return {'FINISHED'}
diff --git a/release/scripts/startup/bl_operators/node.py b/release/scripts/startup/bl_operators/node.py
index 77978c71ed9..0814d0144ab 100644
--- a/release/scripts/startup/bl_operators/node.py
+++ b/release/scripts/startup/bl_operators/node.py
@@ -222,7 +222,7 @@ class NODE_OT_add_search(NodeAddOperator, Operator):
self.create_node(context, item.nodetype)
if self.use_transform:
- bpy.ops.transform.translate('INVOKE_DEFAULT')
+ bpy.ops.transform.translate('INVOKE_DEFAULT', remove_on_cancel=True)
return {'FINISHED'}
else:
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index 05dfd882180..ae6ec3946f1 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -221,7 +221,7 @@ class ExecutePreset(Operator):
class AddPresetRender(AddPresetBase, Operator):
- """Add a Render Preset"""
+ """Add or remove a Render Preset"""
bl_idname = "render.preset_add"
bl_label = "Add Render Preset"
preset_menu = "RENDER_MT_presets"
@@ -247,7 +247,7 @@ class AddPresetRender(AddPresetBase, Operator):
class AddPresetCamera(AddPresetBase, Operator):
- """Add a Camera Preset"""
+ """Add or remove a Camera Preset"""
bl_idname = "camera.preset_add"
bl_label = "Add Camera Preset"
preset_menu = "CAMERA_MT_presets"
@@ -266,7 +266,7 @@ class AddPresetCamera(AddPresetBase, Operator):
class AddPresetSSS(AddPresetBase, Operator):
- """Add a Subsurface Scattering Preset"""
+ """Add or remove a Subsurface Scattering Preset"""
bl_idname = "material.sss_preset_add"
bl_label = "Add SSS Preset"
preset_menu = "MATERIAL_MT_sss_presets"
@@ -294,7 +294,7 @@ class AddPresetSSS(AddPresetBase, Operator):
class AddPresetCloth(AddPresetBase, Operator):
- """Add a Cloth Preset"""
+ """Add or remove a Cloth Preset"""
bl_idname = "cloth.preset_add"
bl_label = "Add Cloth Preset"
preset_menu = "CLOTH_MT_presets"
@@ -316,7 +316,7 @@ class AddPresetCloth(AddPresetBase, Operator):
class AddPresetFluid(AddPresetBase, Operator):
- """Add a Fluid Preset"""
+ """Add or remove a Fluid Preset"""
bl_idname = "fluid.preset_add"
bl_label = "Add Fluid Preset"
preset_menu = "FLUID_MT_presets"
@@ -334,7 +334,7 @@ class AddPresetFluid(AddPresetBase, Operator):
class AddPresetSunSky(AddPresetBase, Operator):
- """Add a Sky & Atmosphere Preset"""
+ """Add or remove a Sky & Atmosphere Preset"""
bl_idname = "lamp.sunsky_preset_add"
bl_label = "Add Sunsky Preset"
preset_menu = "LAMP_MT_sunsky_presets"
@@ -363,7 +363,7 @@ class AddPresetSunSky(AddPresetBase, Operator):
class AddPresetInteraction(AddPresetBase, Operator):
- """Add an Application Interaction Preset"""
+ """Add or remove an Application Interaction Preset"""
bl_idname = "wm.interaction_preset_add"
bl_label = "Add Interaction Preset"
preset_menu = "USERPREF_MT_interaction_presets"
@@ -389,7 +389,7 @@ class AddPresetInteraction(AddPresetBase, Operator):
class AddPresetTrackingCamera(AddPresetBase, Operator):
- """Add a Tracking Camera Intrinsics Preset"""
+ """Add or remove a Tracking Camera Intrinsics Preset"""
bl_idname = "clip.camera_preset_add"
bl_label = "Add Camera Preset"
preset_menu = "CLIP_MT_camera_presets"
@@ -412,7 +412,7 @@ class AddPresetTrackingCamera(AddPresetBase, Operator):
class AddPresetTrackingTrackColor(AddPresetBase, Operator):
- """Add a Clip Track Color Preset"""
+ """Add or remove a Clip Track Color Preset"""
bl_idname = "clip.track_color_preset_add"
bl_label = "Add Track Color Preset"
preset_menu = "CLIP_MT_track_color_presets"
@@ -430,7 +430,7 @@ class AddPresetTrackingTrackColor(AddPresetBase, Operator):
class AddPresetTrackingSettings(AddPresetBase, Operator):
- """Add a motion tracking settings preset"""
+ """Add or remove a motion tracking settings preset"""
bl_idname = "clip.tracking_settings_preset_add"
bl_label = "Add Tracking Settings Preset"
preset_menu = "CLIP_MT_tracking_settings_presets"
@@ -459,7 +459,7 @@ class AddPresetTrackingSettings(AddPresetBase, Operator):
class AddPresetNodeColor(AddPresetBase, Operator):
- """Add a Node Color Preset"""
+ """Add or remove a Node Color Preset"""
bl_idname = "node.node_color_preset_add"
bl_label = "Add Node Color Preset"
preset_menu = "NODE_MT_node_color_presets"
@@ -477,7 +477,7 @@ class AddPresetNodeColor(AddPresetBase, Operator):
class AddPresetInterfaceTheme(AddPresetBase, Operator):
- """Add a theme preset"""
+ """Add or remove a theme preset"""
bl_idname = "wm.interface_theme_preset_add"
bl_label = "Add Theme Preset"
preset_menu = "USERPREF_MT_interface_theme_presets"
@@ -485,7 +485,7 @@ class AddPresetInterfaceTheme(AddPresetBase, Operator):
class AddPresetKeyconfig(AddPresetBase, Operator):
- """Add a Key-config Preset"""
+ """Add or remove a Key-config Preset"""
bl_idname = "wm.keyconfig_preset_add"
bl_label = "Add Keyconfig Preset"
preset_menu = "USERPREF_MT_keyconfigs"
@@ -508,7 +508,7 @@ class AddPresetKeyconfig(AddPresetBase, Operator):
class AddPresetOperator(AddPresetBase, Operator):
- """Add an Operator Preset"""
+ """Add or remove an Operator Preset"""
bl_idname = "wm.operator_preset_add"
bl_label = "Operator Preset"
preset_menu = "WM_MT_operator_presets"
diff --git a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py
index 6d1f35fe937..04c28500089 100644
--- a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py
+++ b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py
@@ -115,11 +115,17 @@ class PlayRenderedAnim(Operator):
cmd = [player_path]
# extra options, fps controls etc.
+ if scene.use_preview_range:
+ frame_start = scene.frame_preview_start
+ frame_end = scene.frame_preview_end
+ else:
+ frame_start = scene.frame_start
+ frame_end = scene.frame_end
if preset in {'BLENDER24', 'INTERNAL'}:
opts = ["-a",
"-f", str(rd.fps), str(rd.fps_base),
- "-s", str(scene.frame_start),
- "-e", str(scene.frame_end),
+ "-s", str(frame_start),
+ "-e", str(frame_end),
"-j", str(scene.frame_step),
file]
cmd.extend(opts)
diff --git a/release/scripts/startup/bl_operators/view3d.py b/release/scripts/startup/bl_operators/view3d.py
index e0b5526e220..2ec095d2e7b 100644
--- a/release/scripts/startup/bl_operators/view3d.py
+++ b/release/scripts/startup/bl_operators/view3d.py
@@ -29,6 +29,11 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator):
bl_label = "Extrude Individual and Move"
bl_idname = "view3d.edit_mesh_extrude_individual_move"
+ @classmethod
+ def poll(cls, context):
+ obj = context.active_object
+ return obj.mode == 'EDIT'
+
def execute(self, context):
mesh = context.object.data
select_mode = context.tool_settings.mesh_select_mode
@@ -62,7 +67,13 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
bl_label = "Extrude and Move on Normals"
bl_idname = "view3d.edit_mesh_extrude_move_normal"
- def execute(self, context):
+ @classmethod
+ def poll(cls, context):
+ obj = context.active_object
+ return obj.mode == 'EDIT'
+
+ @staticmethod
+ def extrude_region(context, use_vert_normals):
mesh = context.object.data
totface = mesh.total_face_sel
@@ -70,10 +81,15 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
#~ totvert = mesh.total_vert_sel
if totface >= 1:
- bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN',
- TRANSFORM_OT_translate={
- "constraint_orientation": 'NORMAL',
- "constraint_axis": (False, False, True)})
+ if use_vert_normals:
+ bpy.ops.mesh.extrude_region_shrink_fatten('INVOKE_REGION_WIN',
+ TRANSFORM_OT_shrink_fatten={})
+ else:
+ bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN',
+ TRANSFORM_OT_translate={
+ "constraint_orientation": 'NORMAL',
+ "constraint_axis": (False, False, True)})
+
elif totedge == 1:
bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN',
TRANSFORM_OT_translate={
@@ -88,6 +104,26 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
# and cause this one not to be freed. [#24671]
return {'FINISHED'}
+ def execute(self, context):
+ return VIEW3D_OT_edit_mesh_extrude_move.extrude_region(context, False)
+
+ def invoke(self, context, event):
+ return self.execute(context)
+
+
+class VIEW3D_OT_edit_mesh_extrude_shrink_fatten(Operator):
+ "Extrude and move along individual normals"
+ bl_label = "Extrude and Move on Individual Normals"
+ bl_idname = "view3d.edit_mesh_extrude_move_shrink_fatten"
+
+ @classmethod
+ def poll(cls, context):
+ obj = context.active_object
+ return obj.mode == 'EDIT'
+
+ def execute(self, context):
+ return VIEW3D_OT_edit_mesh_extrude_move.extrude_region(context, True)
+
def invoke(self, context, event):
return self.execute(context)
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index 5a249159d86..4b954e81ee1 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -1298,10 +1298,10 @@ class WM_OT_blenderplayer_start(Operator):
# handle some UI options as command line arguments
args.extend([
- "-g", "show_framerate=%d" % gs.show_framerate_profile,
- "-g", "show_profile=%d" % gs.show_framerate_profile,
- "-g", "show_properties=%d" % gs.show_debug_properties,
- "-g", "ignore_deprecation_warnings=%d" % (not gs.use_deprecation_warnings),
+ "-g", "show_framerate", "=", "%d" % gs.show_framerate_profile,
+ "-g", "show_profile", "=", "%d" % gs.show_framerate_profile,
+ "-g", "show_properties", "=", "%d" % gs.show_debug_properties,
+ "-g", "ignore_deprecation_warnings", "=", "%d" % (not gs.use_deprecation_warnings),
])
# finish the call with the path to the blend file
diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py
index e01764a5496..a274453a472 100644
--- a/release/scripts/startup/bl_ui/properties_data_armature.py
+++ b/release/scripts/startup/bl_ui/properties_data_armature.py
@@ -121,9 +121,9 @@ class DATA_PT_bone_groups(ArmatureButtonsPanel, Panel):
row = layout.row()
- rows = 2
+ rows = 1
if group:
- rows = 5
+ rows = 4
row.template_list("UI_UL_list", "bone_groups", pose, "bone_groups", pose.bone_groups, "active_index", rows=rows)
col = row.column(align=True)
@@ -184,7 +184,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel):
# list of poses in pose library
row = layout.row()
row.template_list("UI_UL_list", "pose_markers", poselib, "pose_markers",
- poselib.pose_markers, "active_index", rows=5)
+ poselib.pose_markers, "active_index", rows=3)
# column of operators for active pose
# - goes beside list
diff --git a/release/scripts/startup/bl_ui/properties_data_curve.py b/release/scripts/startup/bl_ui/properties_data_curve.py
index 117a662cd07..2171ce67fd3 100644
--- a/release/scripts/startup/bl_ui/properties_data_curve.py
+++ b/release/scripts/startup/bl_ui/properties_data_curve.py
@@ -307,6 +307,10 @@ class DATA_PT_font(CurveButtonsPanel, Panel):
#layout.prop(text, "font")
+ row = layout.split(percentage=0.25)
+ row.label(text="Body Text:")
+ row.prop(text, "body", text="")
+
split = layout.split()
col = split.column()
diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py
index a703222ecd0..f59d479c509 100644
--- a/release/scripts/startup/bl_ui/properties_data_mesh.py
+++ b/release/scripts/startup/bl_ui/properties_data_mesh.py
@@ -191,9 +191,9 @@ class DATA_PT_vertex_groups(MeshButtonsPanel, Panel):
ob = context.object
group = ob.vertex_groups.active
- rows = 2
+ rows = 1
if group:
- rows = 5
+ rows = 4
row = layout.row()
row.template_list("MESH_UL_vgroups", "", ob, "vertex_groups", ob.vertex_groups, "active_index", rows=rows)
@@ -250,9 +250,9 @@ class DATA_PT_shape_keys(MeshButtonsPanel, Panel):
row = layout.row()
- rows = 2
+ rows = 1
if kb:
- rows = 5
+ rows = 4
row.template_list("MESH_UL_shape_keys", "", key, "key_blocks", ob, "active_shape_key_index", rows=rows)
col = row.column()
@@ -329,17 +329,17 @@ class DATA_PT_uv_texture(MeshButtonsPanel, Panel):
layout = self.layout
me = context.mesh
+ lay = me.uv_textures.active
row = layout.row()
col = row.column()
- col.template_list("MESH_UL_uvmaps_vcols", "uvmaps", me, "uv_textures", me.uv_textures, "active_index", rows=2)
+ col.template_list("MESH_UL_uvmaps_vcols", "uvmaps", me, "uv_textures", me.uv_textures, "active_index", rows=1)
col = row.column(align=True)
col.operator("mesh.uv_texture_add", icon='ZOOMIN', text="")
col.operator("mesh.uv_texture_remove", icon='ZOOMOUT', text="")
- lay = me.uv_textures.active
if lay:
layout.prop(lay, "name")
@@ -352,17 +352,17 @@ class DATA_PT_vertex_colors(MeshButtonsPanel, Panel):
layout = self.layout
me = context.mesh
+ lay = me.vertex_colors.active
row = layout.row()
col = row.column()
- col.template_list("MESH_UL_uvmaps_vcols", "vcols", me, "vertex_colors", me.vertex_colors, "active_index", rows=2)
+ col.template_list("MESH_UL_uvmaps_vcols", "vcols", me, "vertex_colors", me.vertex_colors, "active_index", rows=1)
col = row.column(align=True)
col.operator("mesh.vertex_color_add", icon='ZOOMIN', text="")
col.operator("mesh.vertex_color_remove", icon='ZOOMOUT', text="")
- lay = me.vertex_colors.active
if lay:
layout.prop(lay, "name")
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 9bfc14f1f28..288330084b9 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1099,7 +1099,14 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "use_z_symmetry")
def TRIANGULATE(self, layout, ob, md):
- layout.prop(md, "use_beauty")
+ row = layout.row()
+
+ col = row.column()
+ col.label(text="Quad Method:")
+ col.prop(md, "quad_method", text="")
+ col = row.column()
+ col.label(text="Ngon Method:")
+ col.prop(md, "ngon_method", text="")
def UV_WARP(self, layout, ob, md):
split = layout.split()
diff --git a/release/scripts/startup/bl_ui/properties_freestyle.py b/release/scripts/startup/bl_ui/properties_freestyle.py
index a96441a26e5..a57567ae79e 100644
--- a/release/scripts/startup/bl_ui/properties_freestyle.py
+++ b/release/scripts/startup/bl_ui/properties_freestyle.py
@@ -193,7 +193,7 @@ class RENDERLAYER_PT_freestyle_lineset(RenderLayerFreestyleEditorButtonsPanel, P
layout.active = rl.use_freestyle
row = layout.row()
- rows = 5 if lineset else 2
+ rows = 4 if lineset else 1
row.template_list("RENDERLAYER_UL_linesets", "", freestyle, "linesets", freestyle.linesets, "active_index", rows=rows)
sub = row.column(align=True)
diff --git a/release/scripts/startup/bl_ui/properties_mask_common.py b/release/scripts/startup/bl_ui/properties_mask_common.py
index 45f3471ad35..203e5078ee4 100644
--- a/release/scripts/startup/bl_ui/properties_mask_common.py
+++ b/release/scripts/startup/bl_ui/properties_mask_common.py
@@ -82,7 +82,7 @@ class MASK_PT_layers:
mask = sc.mask
active_layer = mask.layers.active
- rows = 5 if active_layer else 2
+ rows = 4 if active_layer else 1
row = layout.row()
row.template_list("MASK_UL_layers", "", mask, "layers",
diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py
index bb0b137da0a..344074c5893 100644
--- a/release/scripts/startup/bl_ui/properties_material.py
+++ b/release/scripts/startup/bl_ui/properties_material.py
@@ -124,7 +124,7 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel):
if ob:
row = layout.row()
- row.template_list("MATERIAL_UL_matslots", "", ob, "material_slots", ob, "active_material_index", rows=2)
+ row.template_list("MATERIAL_UL_matslots", "", ob, "material_slots", ob, "active_material_index", rows=1)
col = row.column(align=True)
col.operator("object.material_slot_add", icon='ZOOMIN', text="")
diff --git a/release/scripts/startup/bl_ui/properties_object.py b/release/scripts/startup/bl_ui/properties_object.py
index 6b317c49487..cbebdafbf2e 100644
--- a/release/scripts/startup/bl_ui/properties_object.py
+++ b/release/scripts/startup/bl_ui/properties_object.py
@@ -236,7 +236,7 @@ class OBJECT_PT_display(ObjectButtonsPanel, Panel):
col = split.column()
if obj_type not in {'CAMERA', 'EMPTY'}:
- col.label(text="Maximum draw type:")
+ col.label(text="Maximum Draw Type:")
col.prop(obj, "draw_type", text="")
col = split.column()
diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py
index 0d526514b5c..f8a37e2768f 100644
--- a/release/scripts/startup/bl_ui/properties_particle.py
+++ b/release/scripts/startup/bl_ui/properties_particle.py
@@ -98,7 +98,7 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
row = layout.row()
row.template_list("UI_UL_list", "particle_systems", ob, "particle_systems",
- ob.particle_systems, "active_index", rows=2)
+ ob.particle_systems, "active_index", rows=1)
col = row.column(align=True)
col.operator("object.particle_system_add", icon='ZOOMIN', text="")
@@ -211,12 +211,12 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, Panel):
row.active = part.distribution != 'GRID'
row.prop(part, "count")
- if part.type == 'HAIR' and not part.use_advanced_hair:
+ if part.type == 'HAIR':
row.prop(part, "hair_length")
-
- row = layout.row()
- row.prop(part, "use_modifier_stack")
- return
+ if not part.use_advanced_hair:
+ row = layout.row()
+ row.prop(part, "use_modifier_stack")
+ return
if part.type != 'HAIR':
split = layout.split()
@@ -642,7 +642,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
layout.label(text="Fluid interaction:")
row = layout.row()
- row.template_list("UI_UL_list", "particle_targets", psys, "targets", psys, "active_particle_target_index")
+ row.template_list("UI_UL_list", "particle_targets", psys, "targets", psys, "active_particle_target_index", rows=4)
col = row.column()
sub = col.row()
@@ -730,7 +730,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
row.label(text="")
row = layout.row()
- row.template_list("UI_UL_list", "particle_boids_rules", state, "rules", state, "active_boid_rule_index")
+ row.template_list("UI_UL_list", "particle_boids_rules", state, "rules", state, "active_boid_rule_index", rows=4)
col = row.column()
sub = col.row()
@@ -1214,28 +1214,34 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel):
ob = context.object
psys = context.particle_system
- split = layout.split(percentage=0.85)
+ col = layout.column()
+ row = col.row(align=True)
+ row.prop_search(psys, "vertex_group_density", ob, "vertex_groups", text="Density")
+ row.prop(psys, "invert_vertex_group_density", text="", toggle=True, icon='ARROW_LEFTRIGHT')
- col = split.column()
- col.label(text="Vertex Group:")
- col.prop_search(psys, "vertex_group_density", ob, "vertex_groups", text="Density")
- col.prop_search(psys, "vertex_group_length", ob, "vertex_groups", text="Length")
- col.prop_search(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump")
- col.prop_search(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink")
- col.prop_search(psys, "vertex_group_roughness_1", ob, "vertex_groups", text="Roughness 1")
- col.prop_search(psys, "vertex_group_roughness_2", ob, "vertex_groups", text="Roughness 2")
- col.prop_search(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End")
+ row = col.row(align=True)
+ row.prop_search(psys, "vertex_group_length", ob, "vertex_groups", text="Length")
+ row.prop(psys, "invert_vertex_group_length", text="", toggle=True, icon='ARROW_LEFTRIGHT')
- col = split.column()
- col.label(text="Negate:")
- col.alignment = 'RIGHT'
- col.prop(psys, "invert_vertex_group_density", text="")
- col.prop(psys, "invert_vertex_group_length", text="")
- col.prop(psys, "invert_vertex_group_clump", text="")
- col.prop(psys, "invert_vertex_group_kink", text="")
- col.prop(psys, "invert_vertex_group_roughness_1", text="")
- col.prop(psys, "invert_vertex_group_roughness_2", text="")
- col.prop(psys, "invert_vertex_group_roughness_end", text="")
+ row = col.row(align=True)
+ row.prop_search(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump")
+ row.prop(psys, "invert_vertex_group_clump", text="", toggle=True, icon='ARROW_LEFTRIGHT')
+
+ row = col.row(align=True)
+ row.prop_search(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink")
+ row.prop(psys, "invert_vertex_group_kink", text="", toggle=True, icon='ARROW_LEFTRIGHT')
+
+ row = col.row(align=True)
+ row.prop_search(psys, "vertex_group_roughness_1", ob, "vertex_groups", text="Roughness 1")
+ row.prop(psys, "invert_vertex_group_roughness_1", text="", toggle=True, icon='ARROW_LEFTRIGHT')
+
+ row = col.row(align=True)
+ row.prop_search(psys, "vertex_group_roughness_2", ob, "vertex_groups", text="Roughness 2")
+ row.prop(psys, "invert_vertex_group_roughness_2", text="", toggle=True, icon='ARROW_LEFTRIGHT')
+
+ row = col.row(align=True)
+ row.prop_search(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End")
+ row.prop(psys, "invert_vertex_group_roughness_end", text="", toggle=True, icon='ARROW_LEFTRIGHT')
# Commented out vertex groups don't work and are still waiting for better implementation
# row = layout.row()
diff --git a/release/scripts/startup/bl_ui/properties_physics_common.py b/release/scripts/startup/bl_ui/properties_physics_common.py
index 22c71c233c2..4b4c331d2d8 100644
--- a/release/scripts/startup/bl_ui/properties_physics_common.py
+++ b/release/scripts/startup/bl_ui/properties_physics_common.py
@@ -107,7 +107,7 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
if not cachetype == 'RIGID_BODY':
row = layout.row()
row.template_list("UI_UL_list", "point_caches", cache, "point_caches",
- cache.point_caches, "active_index", rows=2)
+ cache.point_caches, "active_index", rows=1)
col = row.column(align=True)
col.operator("ptcache.add", icon='ZOOMIN', text="")
col.operator("ptcache.remove", icon='ZOOMOUT', text="")
diff --git a/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py b/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
index 75c4caa57bd..f0c7a532414 100644
--- a/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
+++ b/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
@@ -80,7 +80,7 @@ class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel):
row = layout.row()
row.template_list("PHYSICS_UL_dynapaint_surfaces", "", canvas, "canvas_surfaces",
- canvas.canvas_surfaces, "active_index", rows=2)
+ canvas.canvas_surfaces, "active_index", rows=1)
col = row.column(align=True)
col.operator("dpaint.surface_slot_add", icon='ZOOMIN', text="")
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 288f95ca4b0..5e54287ac33 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -67,9 +67,11 @@ class RENDER_PT_render(RenderButtonsPanel, Panel):
row = layout.row(align=True)
row.operator("render.render", text="Render", icon='RENDER_STILL')
row.operator("render.render", text="Animation", icon='RENDER_ANIMATION').animation = True
- row.operator("render.play_rendered_anim", text="Play", icon='PLAY')
+ row.operator("sound.mixdown", text="Audio", icon='PLAY_AUDIO')
- layout.prop(rd, "display_mode", text="Display")
+ split = layout.split(1 / 3)
+ split.operator("render.play_rendered_anim", text="Play", icon='PLAY')
+ split.prop(rd, "display_mode", text="Display")
class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
@@ -317,13 +319,6 @@ class RENDER_PT_post_processing(RenderButtonsPanel, Panel):
sub.row().prop(rd, "field_order", expand=True)
sub.prop(rd, "use_fields_still", text="Still")
- col = split.column()
- col.prop(rd, "use_edge_enhance")
- sub = col.column()
- sub.active = rd.use_edge_enhance
- sub.prop(rd, "edge_threshold", text="Threshold", slider=True)
- sub.prop(rd, "edge_color", text="")
-
class RENDER_PT_stamp(RenderButtonsPanel, Panel):
bl_label = "Stamp"
@@ -395,10 +390,7 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
layout.template_image_settings(image_settings, color_management=False)
- if file_format == 'QUICKTIME_CARBON':
- layout.operator("scene.render_data_set_quicktime_codec")
-
- elif file_format == 'QUICKTIME_QTKIT':
+ if file_format == 'QUICKTIME':
quicktime = rd.quicktime
split = layout.split()
diff --git a/release/scripts/startup/bl_ui/properties_render_layer.py b/release/scripts/startup/bl_ui/properties_render_layer.py
index 2514cca8c0f..dcc4508f086 100644
--- a/release/scripts/startup/bl_ui/properties_render_layer.py
+++ b/release/scripts/startup/bl_ui/properties_render_layer.py
@@ -57,7 +57,8 @@ class RENDERLAYER_PT_layers(RenderLayerButtonsPanel, Panel):
rd = scene.render
row = layout.row()
- row.template_list("RENDERLAYER_UL_renderlayers", "", rd, "layers", rd.layers, "active_index", rows=2)
+ col = row.column()
+ col.template_list("RENDERLAYER_UL_renderlayers", "", rd, "layers", rd.layers, "active_index", rows=1)
col = row.column(align=True)
col.operator("scene.render_layer_add", icon='ZOOMIN', text="")
@@ -112,7 +113,6 @@ class RENDERLAYER_PT_layer_options(RenderLayerButtonsPanel, Panel):
col = split.column()
col.prop(rl, "use_sky")
- col.prop(rl, "use_edge_enhance")
col.prop(rl, "use_strand")
if bpy.app.build_options.freestyle:
row = col.row()
diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py
index a04283de8bf..91a5abd0ad0 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -94,7 +94,7 @@ class SCENE_PT_keying_sets(SceneButtonsPanel, Panel):
row = layout.row()
col = row.column()
- col.template_list("UI_UL_list", "keying_sets", scene, "keying_sets", scene.keying_sets, "active_index", rows=2)
+ col.template_list("UI_UL_list", "keying_sets", scene, "keying_sets", scene.keying_sets, "active_index", rows=1)
col = row.column(align=True)
col.operator("anim.keying_set_add", icon='ZOOMIN', text="")
@@ -138,7 +138,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel, Panel):
row = layout.row()
col = row.column()
- col.template_list("SCENE_UL_keying_set_paths", "", ks, "paths", ks.paths, "active_index", rows=2)
+ col.template_list("SCENE_UL_keying_set_paths", "", ks, "paths", ks.paths, "active_index", rows=1)
col = row.column(align=True)
col.operator("anim.keying_set_path_add", icon='ZOOMIN', text="")
@@ -227,8 +227,6 @@ class SCENE_PT_audio(SceneButtonsPanel, Panel):
col.prop(ffmpeg, "audio_channels", text="")
col.prop(ffmpeg, "audio_mixrate", text="Rate")
- layout.operator("sound.mixdown")
-
class SCENE_PT_physics(SceneButtonsPanel, Panel):
bl_label = "Gravity"
diff --git a/release/scripts/startup/bl_ui/properties_world.py b/release/scripts/startup/bl_ui/properties_world.py
index 0b8d8a45a08..0b6ce41eb5d 100644
--- a/release/scripts/startup/bl_ui/properties_world.py
+++ b/release/scripts/startup/bl_ui/properties_world.py
@@ -244,34 +244,6 @@ class WORLD_PT_mist(WorldButtonsPanel, Panel):
layout.prop(world.mist_settings, "falloff")
-class WORLD_PT_stars(WorldButtonsPanel, Panel):
- bl_label = "Stars"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw_header(self, context):
- world = context.world
-
- self.layout.prop(world.star_settings, "use_stars", text="")
-
- def draw(self, context):
- layout = self.layout
-
- world = context.world
-
- layout.active = world.star_settings.use_stars
-
- split = layout.split()
-
- col = split.column()
- col.prop(world.star_settings, "size")
- col.prop(world.star_settings, "color_random", text="Colors")
-
- col = split.column()
- col.prop(world.star_settings, "distance_min", text="Min. Dist")
- col.prop(world.star_settings, "average_separation", text="Separation")
-
-
class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "world"
diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py
index 540b707cf93..3db8697a457 100644
--- a/release/scripts/startup/bl_ui/space_clip.py
+++ b/release/scripts/startup/bl_ui/space_clip.py
@@ -352,14 +352,6 @@ class CLIP_PT_tools_solve(CLIP_PT_tracking_panel, Panel):
col.label(text="Refine:")
col.prop(settings, "refine_intrinsics", text="")
- col = layout.column(align=True)
- col.active = not settings.use_tripod_solver
- col.prop(settings, "use_fallback_reconstruction",
- text="Allow Fallback")
- sub = col.column(align=True)
- sub.active = settings.use_fallback_reconstruction
- sub.prop(settings, "reconstruction_success_threshold")
-
class CLIP_PT_tools_cleanup(CLIP_PT_tracking_panel, Panel):
bl_space_type = 'CLIP_EDITOR'
@@ -507,7 +499,7 @@ class CLIP_PT_objects(CLIP_PT_clip_view_panel, Panel):
row = layout.row()
row.template_list("CLIP_UL_tracking_objects", "", tracking, "objects",
- tracking, "active_object_index", rows=3)
+ tracking, "active_object_index", rows=1)
sub = row.column(align=True)
@@ -577,6 +569,8 @@ class CLIP_PT_track(CLIP_PT_tracking_panel, Panel):
if act_track.use_custom_color:
row.prop(act_track, "color", text="")
+ layout.prop(act_track, "weight")
+
if act_track.has_bundle:
label_text = "Average Error: %.4f" % (act_track.average_error)
layout.label(text=label_text)
@@ -783,7 +777,7 @@ class CLIP_PT_stabilization(CLIP_PT_reconstruction_panel, Panel):
row = layout.row()
row.template_list("UI_UL_list", "stabilization_tracks", stab, "tracks",
- stab, "active_track_index", rows=3)
+ stab, "active_track_index", rows=2)
sub = row.column(align=True)
diff --git a/release/scripts/startup/bl_ui/space_graph.py b/release/scripts/startup/bl_ui/space_graph.py
index 2d0b1c93d13..61e2f10a057 100644
--- a/release/scripts/startup/bl_ui/space_graph.py
+++ b/release/scripts/startup/bl_ui/space_graph.py
@@ -46,6 +46,11 @@ class GRAPH_HT_header(Header):
dopesheet_filter(layout, context)
+ layout.prop(st, "use_normalization", text="Normalize")
+ row = layout.row()
+ row.active = st.use_normalization
+ row.prop(st, "use_auto_normalization", text="Auto")
+
layout.prop(st, "auto_snap", text="")
layout.prop(st, "pivot_point", text="", icon_only=True)
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index 17ed7b44cf1..397b74116c2 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -106,7 +106,6 @@ class IMAGE_MT_select(Menu):
layout.operator("uv.select_all").action = 'TOGGLE'
layout.operator("uv.select_all", text="Inverse").action = 'INVERT'
- layout.operator("uv.select_split")
layout.separator()
@@ -728,7 +727,7 @@ class IMAGE_PT_tools_brush_overlay(BrushButtonsPanel, Panel):
tex_slot_mask = brush.mask_texture_slot
col = layout.column()
-
+
col.label(text="Curve:")
row = col.row(align=True)
diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py
index 5a570d18312..a7a648e3c44 100644
--- a/release/scripts/startup/bl_ui/space_info.py
+++ b/release/scripts/startup/bl_ui/space_info.py
@@ -37,7 +37,6 @@ class INFO_HT_header(Header):
if context.area.show_menus:
sub = row.row(align=True)
sub.menu("INFO_MT_file")
- sub.menu("INFO_MT_add")
if rd.use_game_engine:
sub.menu("INFO_MT_game")
else:
@@ -79,35 +78,6 @@ class INFO_HT_header(Header):
row.operator("wm.splash", text="", icon='BLENDER', emboss=False)
row.label(text=scene.statistics(), translate=False)
- # XXX: BEFORE RELEASE, MOVE FILE MENU OUT OF INFO!!!
- """
- sinfo = context.space_data
- row = layout.row(align=True)
- row.prop(sinfo, "show_report_debug", text="Debug")
- row.prop(sinfo, "show_report_info", text="Info")
- row.prop(sinfo, "show_report_operator", text="Operators")
- row.prop(sinfo, "show_report_warning", text="Warnings")
- row.prop(sinfo, "show_report_error", text="Errors")
-
- row = layout.row()
- row.enabled = sinfo.show_report_operator
- row.operator("info.report_replay")
-
- row.menu("INFO_MT_report")
- """
-
-
-class INFO_MT_report(Menu):
- bl_label = "Report"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("console.select_all_toggle")
- layout.operator("console.select_border")
- layout.operator("console.report_delete")
- layout.operator("console.report_copy")
-
class INFO_MT_file(Menu):
bl_label = "File"
@@ -199,132 +169,6 @@ class INFO_MT_file_external_data(Menu):
layout.operator("file.find_missing_files")
-class INFO_MT_mesh_add(Menu):
- bl_idname = "INFO_MT_mesh_add"
- bl_label = "Mesh"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("mesh.primitive_plane_add", icon='MESH_PLANE', text="Plane")
- layout.operator("mesh.primitive_cube_add", icon='MESH_CUBE', text="Cube")
- layout.operator("mesh.primitive_circle_add", icon='MESH_CIRCLE', text="Circle")
- layout.operator("mesh.primitive_uv_sphere_add", icon='MESH_UVSPHERE', text="UV Sphere")
- layout.operator("mesh.primitive_ico_sphere_add", icon='MESH_ICOSPHERE', text="Icosphere")
- layout.operator("mesh.primitive_cylinder_add", icon='MESH_CYLINDER', text="Cylinder")
- layout.operator("mesh.primitive_cone_add", icon='MESH_CONE', text="Cone")
- layout.separator()
- layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid")
- layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey")
- layout.operator("mesh.primitive_torus_add", icon='MESH_TORUS', text="Torus")
-
-
-class INFO_MT_curve_add(Menu):
- bl_idname = "INFO_MT_curve_add"
- bl_label = "Curve"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("curve.primitive_bezier_curve_add", icon='CURVE_BEZCURVE', text="Bezier")
- layout.operator("curve.primitive_bezier_circle_add", icon='CURVE_BEZCIRCLE', text="Circle")
- layout.operator("curve.primitive_nurbs_curve_add", icon='CURVE_NCURVE', text="Nurbs Curve")
- layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text="Nurbs Circle")
- layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path")
-
-
-class INFO_MT_surface_add(Menu):
- bl_idname = "INFO_MT_surface_add"
- bl_label = "Surface"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("surface.primitive_nurbs_surface_curve_add", icon='SURFACE_NCURVE', text="NURBS Curve")
- layout.operator("surface.primitive_nurbs_surface_circle_add", icon='SURFACE_NCIRCLE', text="NURBS Circle")
- layout.operator("surface.primitive_nurbs_surface_surface_add", icon='SURFACE_NSURFACE', text="NURBS Surface")
- layout.operator("surface.primitive_nurbs_surface_cylinder_add", icon='SURFACE_NCYLINDER', text="NURBS Cylinder")
- layout.operator("surface.primitive_nurbs_surface_sphere_add", icon='SURFACE_NSPHERE', text="NURBS Sphere")
- layout.operator("surface.primitive_nurbs_surface_torus_add", icon='SURFACE_NTORUS', text="NURBS Torus")
-
-
-class INFO_MT_edit_curve_add(Menu):
- bl_idname = "INFO_MT_edit_curve_add"
- bl_label = "Add"
-
- def draw(self, context):
- is_surf = context.active_object.type == 'SURFACE'
-
- layout = self.layout
- layout.operator_context = 'EXEC_REGION_WIN'
-
- if is_surf:
- INFO_MT_surface_add.draw(self, context)
- else:
- INFO_MT_curve_add.draw(self, context)
-
-
-class INFO_MT_armature_add(Menu):
- bl_idname = "INFO_MT_armature_add"
- bl_label = "Armature"
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("object.armature_add", text="Single Bone", icon='BONE_DATA')
-
-
-class INFO_MT_add(Menu):
- bl_label = "Add"
-
- def draw(self, context):
- layout = self.layout
-
- # note, don't use 'EXEC_SCREEN' or operators wont get the 'v3d' context.
-
- # Note: was EXEC_AREA, but this context does not have the 'rv3d', which prevents
- # "align_view" to work on first call (see [#32719]).
- layout.operator_context = 'EXEC_REGION_WIN'
-
- #layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH')
- layout.menu("INFO_MT_mesh_add", icon='OUTLINER_OB_MESH')
-
- #layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE')
- layout.menu("INFO_MT_curve_add", icon='OUTLINER_OB_CURVE')
- #layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE')
- layout.menu("INFO_MT_surface_add", icon='OUTLINER_OB_SURFACE')
- layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator_menu_enum("object.metaball_add", "type", text="Metaball", icon='OUTLINER_OB_META')
- layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT')
- layout.separator()
-
- layout.menu("INFO_MT_armature_add", icon='OUTLINER_OB_ARMATURE')
- layout.operator("object.add", text="Lattice", icon='OUTLINER_OB_LATTICE').type = 'LATTICE'
- layout.operator_menu_enum("object.empty_add", "type", text="Empty", icon='OUTLINER_OB_EMPTY')
- layout.separator()
-
- layout.operator("object.speaker_add", text="Speaker", icon='OUTLINER_OB_SPEAKER')
- layout.separator()
-
- layout.operator("object.camera_add", text="Camera", icon='OUTLINER_OB_CAMERA')
- layout.operator_menu_enum("object.lamp_add", "type", text="Lamp", icon='OUTLINER_OB_LAMP')
- layout.separator()
-
- layout.operator_menu_enum("object.effector_add", "type", text="Force Field", icon='OUTLINER_OB_EMPTY')
- layout.separator()
-
- if len(bpy.data.groups) > 10:
- layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("object.group_instance_add", text="Group Instance...", icon='OUTLINER_OB_EMPTY')
- else:
- layout.operator_menu_enum("object.group_instance_add", "group", text="Group Instance", icon='OUTLINER_OB_EMPTY')
-
-
class INFO_MT_game(Menu):
bl_label = "Game"
@@ -394,22 +238,21 @@ class INFO_MT_help(Menu):
layout = self.layout
layout.operator("wm.url_open", text="Manual", icon='HELP').url = "http://wiki.blender.org/index.php/Doc:2.6/Manual"
- layout.operator("wm.url_open", text="Release Log", icon='URL').url = "http://www.blender.org/development/release-logs/blender-269"
+ layout.operator("wm.url_open", text="Release Log", icon='URL').url = "http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.70"
layout.separator()
layout.operator("wm.url_open", text="Blender Website", icon='URL').url = "http://www.blender.org"
layout.operator("wm.url_open", text="Blender e-Shop", icon='URL').url = "http://www.blender.org/e-shop"
- layout.operator("wm.url_open", text="Developer Community", icon='URL').url = "http://www.blender.org/community/get-involved"
+ layout.operator("wm.url_open", text="Developer Community", icon='URL').url = "http://www.blender.org/get-involved/"
layout.operator("wm.url_open", text="User Community", icon='URL').url = "http://www.blender.org/community/user-community"
layout.separator()
- layout.operator("wm.url_open", text="Report a Bug", icon='URL').url = "http://projects.blender.org/tracker/?atid=498&group_id=9&func=browse"
+ layout.operator("wm.url_open", text="Report a Bug", icon='URL').url = "http://developer.blender.org/maniphest/task/create/?project=2&type=Bug"
layout.separator()
layout.operator("wm.url_open", text="Python API Reference", icon='URL').url = bpy.types.WM_OT_doc_view._prefix
layout.operator("wm.operator_cheat_sheet", icon='TEXT')
layout.operator("wm.sysinfo", icon='TEXT')
layout.separator()
- layout.operator("anim.update_data_paths", text="FCurve/Driver Version fix", icon='HELP')
layout.operator("logic.texface_convert", text="TexFace to Material Convert", icon='GAME')
layout.separator()
diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py
index 1721eacd8ac..46234b638eb 100644
--- a/release/scripts/startup/bl_ui/space_node.py
+++ b/release/scripts/startup/bl_ui/space_node.py
@@ -105,7 +105,7 @@ class NODE_HT_header(Header):
row = layout.row(align=True)
row.prop(toolsettings, "use_snap", text="")
row.prop(toolsettings, "snap_node_element", text="", icon_only=True)
- if toolsettings.snap_node_element != 'INCREMENT':
+ if toolsettings.snap_node_element != 'GRID':
row.prop(toolsettings, "snap_target", text="")
row = layout.row(align=True)
@@ -169,6 +169,7 @@ class NODE_MT_select(Menu):
layout = self.layout
layout.operator("node.select_border")
+ layout.operator("node.select_circle")
layout.separator()
layout.operator("node.select_all").action = 'TOGGLE'
@@ -233,7 +234,6 @@ class NODE_MT_node(Menu):
layout.separator()
- layout.operator("node.show_cyclic_dependencies")
layout.operator("node.read_renderlayers")
layout.operator("node.read_fullsamplelayers")
@@ -364,7 +364,7 @@ class NODE_PT_backdrop(Panel):
col.prop(snode, "backdrop_x", text="X")
col.prop(snode, "backdrop_y", text="Y")
col.operator("node.backimage_move", text="Move")
-
+
layout.operator("node.backimage_fit", text="Fit")
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index ea88d35b4e9..6f28bcb2225 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -416,6 +416,10 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel):
sub.prop(strip, "blend_alpha", text="Opacity", slider=True)
row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON' if strip.mute else 'RESTRICT_VIEW_OFF', text="")
row.prop(strip, "lock", toggle=True, icon='LOCKED' if strip.lock else 'UNLOCKED', text="")
+ else:
+ row = layout.row(align=True)
+ row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON' if strip.mute else 'RESTRICT_VIEW_OFF')
+ row.prop(strip, "lock", toggle=True, icon='LOCKED' if strip.lock else 'UNLOCKED')
col = layout.column()
sub = col.column()
diff --git a/release/scripts/startup/bl_ui/space_text.py b/release/scripts/startup/bl_ui/space_text.py
index 41ded2fe768..32cb1009492 100644
--- a/release/scripts/startup/bl_ui/space_text.py
+++ b/release/scripts/startup/bl_ui/space_text.py
@@ -49,7 +49,7 @@ class TEXT_HT_header(Header):
sub.alert = True
sub.operator("text.resolve_conflict", text="", icon='HELP')
- row.template_ID(st, "text", new="text.new", unlink="text.unlink")
+ row.template_ID(st, "text", new="text.new", unlink="text.unlink", open="text.open")
row = layout.row(align=True)
row.prop(st, "show_line_numbers", text="")
diff --git a/release/scripts/startup/bl_ui/space_time.py b/release/scripts/startup/bl_ui/space_time.py
index de8be9dff99..4cb67181fdb 100644
--- a/release/scripts/startup/bl_ui/space_time.py
+++ b/release/scripts/startup/bl_ui/space_time.py
@@ -40,7 +40,9 @@ class TIME_HT_header(Header):
row.menu("TIME_MT_frame")
row.menu("TIME_MT_playback")
- layout.prop(scene, "use_preview_range", text="", toggle=True)
+ row = layout.row(align=True)
+ row.prop(scene, "use_preview_range", text="", toggle=True)
+ row.prop(scene, "lock_frame_selection_to_range", text="", toggle=True)
row = layout.row(align=True)
if not scene.use_preview_range:
@@ -227,6 +229,11 @@ def marker_menu_generic(layout):
layout.operator("marker.rename", text="Rename Marker")
layout.operator("marker.move", text="Grab/Move Marker")
+ layout.separator()
+
+ layout.operator("screen.marker_jump", text="Jump to Next Marker").next = True
+ layout.operator("screen.marker_jump", text="Jump to Previous Marker").next = False
+
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 1e9c9e7ff7e..e21656c3259 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -268,12 +268,16 @@ class USERPREF_PT_edit(Panel):
col = row.column()
col.label(text="Grease Pencil:")
+ col.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius")
+ col.separator()
col.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance")
col.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance")
- col.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius")
+ col.separator()
col.prop(edit, "use_grease_pencil_smooth_stroke", text="Smooth Stroke")
col.prop(edit, "use_grease_pencil_simplify_stroke", text="Simplify Stroke")
col.separator()
+ col.prop(edit, "grease_pencil_default_color", text="Default Color")
+ col.separator()
col.separator()
col.separator()
col.label(text="Playback:")
@@ -1251,15 +1255,15 @@ class USERPREF_PT_addons(Panel):
split.label(text=' ' + info["warning"], icon='ERROR')
user_addon = USERPREF_PT_addons.is_user_addon(mod, user_addon_paths)
- tot_row = bool(info["wiki_url"]) + bool(info["tracker_url"]) + bool(user_addon)
+ tot_row = bool(info["wiki_url"]) + bool(user_addon)
if tot_row:
split = colsub.row().split(percentage=0.15)
split.label(text="Internet:")
if info["wiki_url"]:
split.operator("wm.url_open", text="Documentation", icon='HELP').url = info["wiki_url"]
- if info["tracker_url"]:
- split.operator("wm.url_open", text="Report a Bug", icon='URL').url = info["tracker_url"]
+ tracker_url = "http://developer.blender.org/maniphest/task/create/?project=3&type=Bug"
+ split.operator("wm.url_open", text="Report a Bug", icon='URL').url = tracker_url
if user_addon:
split.operator("wm.addon_remove", text="Remove", icon='CANCEL').module = mod.__name__
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 056859af3b4..81da0c3edde 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -54,6 +54,17 @@ class VIEW3D_HT_header(Header):
elif mode_string not in {'EDIT_TEXT', 'SCULPT'}:
sub.menu("VIEW3D_MT_select_%s" % mode_string.lower())
+ if mode_string == 'OBJECT':
+ sub.menu("INFO_MT_add", text="Add")
+ elif mode_string == 'EDIT_MESH':
+ sub.menu("INFO_MT_mesh_add", text="Add")
+ elif mode_string == 'EDIT_CURVE':
+ sub.menu("INFO_MT_curve_add", text="Add")
+ elif mode_string == 'EDIT_SURFACE':
+ sub.menu("INFO_MT_surface_add", text="Add")
+ elif mode_string == 'EDIT_METABALL':
+ sub.menu("INFO_MT_metaball_add", text="Add")
+
if edit_object:
sub.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower())
elif obj:
@@ -132,6 +143,7 @@ class VIEW3D_HT_header(Header):
# ********** Menu **********
+
# ********** Utilities **********
@@ -167,8 +179,9 @@ class VIEW3D_MT_transform_base(Menu):
layout.operator("transform.tosphere", text="To Sphere")
layout.operator("transform.shear", text="Shear")
- layout.operator("transform.warp", text="Warp")
+ layout.operator("transform.bend", text="Bend")
layout.operator("transform.push_pull", text="Push/Pull")
+ layout.operator("object.vertex_warp", text="Warp")
# Generic transform menu - geometry types
@@ -528,7 +541,7 @@ class VIEW3D_MT_select_pose(Menu):
layout.operator("pose.select_all").action = 'TOGGLE'
layout.operator("pose.select_all", text="Inverse").action = 'INVERT'
- layout.operator("pose.select_flip_active", text="Flip Active")
+ layout.operator("pose.select_mirror", text="Flip Active")
layout.operator("pose.select_constraint_target", text="Constraint Target")
layout.operator("pose.select_linked", text="Linked")
@@ -716,6 +729,10 @@ class VIEW3D_MT_select_edit_metaball(Menu):
layout.operator("mball.select_random_metaelems")
+ layout.separator()
+
+ layout.operator_menu_enum("mball.select_similar", "type", text="Similar")
+
class VIEW3D_MT_select_edit_lattice(Menu):
bl_label = "Select"
@@ -750,6 +767,7 @@ class VIEW3D_MT_select_edit_armature(Menu):
layout.operator("armature.select_all").action = 'TOGGLE'
layout.operator("armature.select_all", text="Inverse").action = 'INVERT'
+ layout.operator("armature.select_mirror", text="Mirror").extend = False
layout.separator()
@@ -812,6 +830,145 @@ class VIEW3D_MT_select_paint_mask_vertex(Menu):
layout.operator("paint.vert_select_ungrouped", text="Ungrouped Verts")
+# ********** Add menu **********
+
+# XXX: INFO_MT_ names used to keep backwards compatibility (Addons etc that hook into the menu)
+
+
+class INFO_MT_mesh_add(Menu):
+ bl_idname = "INFO_MT_mesh_add"
+ bl_label = "Mesh"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator_context = 'INVOKE_REGION_WIN'
+ layout.operator("mesh.primitive_plane_add", icon='MESH_PLANE', text="Plane")
+ layout.operator("mesh.primitive_cube_add", icon='MESH_CUBE', text="Cube")
+ layout.operator("mesh.primitive_circle_add", icon='MESH_CIRCLE', text="Circle")
+ layout.operator("mesh.primitive_uv_sphere_add", icon='MESH_UVSPHERE', text="UV Sphere")
+ layout.operator("mesh.primitive_ico_sphere_add", icon='MESH_ICOSPHERE', text="Icosphere")
+ layout.operator("mesh.primitive_cylinder_add", icon='MESH_CYLINDER', text="Cylinder")
+ layout.operator("mesh.primitive_cone_add", icon='MESH_CONE', text="Cone")
+ layout.separator()
+ layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid")
+ layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey")
+ layout.operator("mesh.primitive_torus_add", icon='MESH_TORUS', text="Torus")
+
+
+class INFO_MT_curve_add(Menu):
+ bl_idname = "INFO_MT_curve_add"
+ bl_label = "Curve"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator_context = 'INVOKE_REGION_WIN'
+ layout.operator("curve.primitive_bezier_curve_add", icon='CURVE_BEZCURVE', text="Bezier")
+ layout.operator("curve.primitive_bezier_circle_add", icon='CURVE_BEZCIRCLE', text="Circle")
+ layout.operator("curve.primitive_nurbs_curve_add", icon='CURVE_NCURVE', text="Nurbs Curve")
+ layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text="Nurbs Circle")
+ layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path")
+
+
+class INFO_MT_surface_add(Menu):
+ bl_idname = "INFO_MT_surface_add"
+ bl_label = "Surface"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator_context = 'INVOKE_REGION_WIN'
+ layout.operator("surface.primitive_nurbs_surface_curve_add", icon='SURFACE_NCURVE', text="NURBS Curve")
+ layout.operator("surface.primitive_nurbs_surface_circle_add", icon='SURFACE_NCIRCLE', text="NURBS Circle")
+ layout.operator("surface.primitive_nurbs_surface_surface_add", icon='SURFACE_NSURFACE', text="NURBS Surface")
+ layout.operator("surface.primitive_nurbs_surface_cylinder_add", icon='SURFACE_NCYLINDER', text="NURBS Cylinder")
+ layout.operator("surface.primitive_nurbs_surface_sphere_add", icon='SURFACE_NSPHERE', text="NURBS Sphere")
+ layout.operator("surface.primitive_nurbs_surface_torus_add", icon='SURFACE_NTORUS', text="NURBS Torus")
+
+
+class INFO_MT_metaball_add(Menu):
+ bl_idname = "INFO_MT_metaball_add"
+ bl_label = "Metaball"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator_context = 'INVOKE_REGION_WIN'
+ layout.operator_enum("object.metaball_add", "type")
+
+
+class INFO_MT_edit_curve_add(Menu):
+ bl_idname = "INFO_MT_edit_curve_add"
+ bl_label = "Add"
+
+ def draw(self, context):
+ is_surf = context.active_object.type == 'SURFACE'
+
+ layout = self.layout
+ layout.operator_context = 'EXEC_REGION_WIN'
+
+ if is_surf:
+ INFO_MT_surface_add.draw(self, context)
+ else:
+ INFO_MT_curve_add.draw(self, context)
+
+
+class INFO_MT_armature_add(Menu):
+ bl_idname = "INFO_MT_armature_add"
+ bl_label = "Armature"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator_context = 'EXEC_REGION_WIN'
+ layout.operator("object.armature_add", text="Single Bone", icon='BONE_DATA')
+
+
+class INFO_MT_add(Menu):
+ bl_label = "Add"
+
+ def draw(self, context):
+ layout = self.layout
+
+ # note, don't use 'EXEC_SCREEN' or operators wont get the 'v3d' context.
+
+ # Note: was EXEC_AREA, but this context does not have the 'rv3d', which prevents
+ # "align_view" to work on first call (see [#32719]).
+ layout.operator_context = 'EXEC_REGION_WIN'
+
+ #layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH')
+ layout.menu("INFO_MT_mesh_add", icon='OUTLINER_OB_MESH')
+
+ #layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE')
+ layout.menu("INFO_MT_curve_add", icon='OUTLINER_OB_CURVE')
+ #layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE')
+ layout.menu("INFO_MT_surface_add", icon='OUTLINER_OB_SURFACE')
+ layout.menu("INFO_MT_metaball_add", text="Metaball", icon='OUTLINER_OB_META')
+ layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT')
+ layout.separator()
+
+ layout.menu("INFO_MT_armature_add", icon='OUTLINER_OB_ARMATURE')
+ layout.operator("object.add", text="Lattice", icon='OUTLINER_OB_LATTICE').type = 'LATTICE'
+ layout.operator_menu_enum("object.empty_add", "type", text="Empty", icon='OUTLINER_OB_EMPTY')
+ layout.separator()
+
+ layout.operator("object.speaker_add", text="Speaker", icon='OUTLINER_OB_SPEAKER')
+ layout.separator()
+
+ layout.operator("object.camera_add", text="Camera", icon='OUTLINER_OB_CAMERA')
+ layout.operator_menu_enum("object.lamp_add", "type", text="Lamp", icon='OUTLINER_OB_LAMP')
+ layout.separator()
+
+ layout.operator_menu_enum("object.effector_add", "type", text="Force Field", icon='OUTLINER_OB_EMPTY')
+ layout.separator()
+
+ if len(bpy.data.groups) > 10:
+ layout.operator_context = 'INVOKE_REGION_WIN'
+ layout.operator("object.group_instance_add", text="Group Instance...", icon='OUTLINER_OB_EMPTY')
+ else:
+ layout.operator_menu_enum("object.group_instance_add", "group", text="Group Instance", icon='OUTLINER_OB_EMPTY')
+
# ********** Object menu **********
@@ -1364,6 +1521,7 @@ class VIEW3D_MT_paint_weight(Menu):
layout.operator("object.vertex_group_mirror", text="Mirror")
layout.operator("object.vertex_group_invert", text="Invert")
layout.operator("object.vertex_group_clean", text="Clean")
+ layout.operator("object.vertex_group_quantize", text="Quantize")
layout.operator("object.vertex_group_levels", text="Levels")
layout.operator("object.vertex_group_blend", text="Blend")
layout.operator("object.vertex_group_transfer_weight", text="Transfer Weights")
@@ -1442,6 +1600,9 @@ class VIEW3D_MT_hide_mask(Menu):
props.mode = 'VALUE'
props.value = 0
+ props = layout.operator("view3d.select_border", text="Box Mask")
+ props = layout.operator("paint.mask_lasso_gesture", text="Lasso Mask")
+
# ********** Particle menu **********
@@ -1909,10 +2070,16 @@ class VIEW3D_MT_edit_mesh_extrude(Menu):
bl_label = "Extrude"
_extrude_funcs = {
- 'VERT': lambda layout: layout.operator("mesh.extrude_vertices_move", text="Vertices Only"),
- 'EDGE': lambda layout: layout.operator("mesh.extrude_edges_move", text="Edges Only"),
- 'FACE': lambda layout: layout.operator("mesh.extrude_faces_move", text="Individual Faces"),
- 'REGION': lambda layout: layout.operator("view3d.edit_mesh_extrude_move_normal", text="Region"),
+ 'VERT': lambda layout:
+ layout.operator("mesh.extrude_vertices_move", text="Vertices Only"),
+ 'EDGE': lambda layout:
+ layout.operator("mesh.extrude_edges_move", text="Edges Only"),
+ 'FACE': lambda layout:
+ layout.operator("mesh.extrude_faces_move", text="Individual Faces"),
+ 'REGION': lambda layout:
+ layout.operator("view3d.edit_mesh_extrude_move_normal", text="Region"),
+ 'REGION_VERT_NORMAL': lambda layout:
+ layout.operator("view3d.edit_mesh_extrude_move_shrink_fatten", text="Region (Vertex Normals)"),
}
@staticmethod
@@ -1922,7 +2089,7 @@ class VIEW3D_MT_edit_mesh_extrude(Menu):
menu = []
if mesh.total_face_sel:
- menu += ['REGION', 'FACE']
+ menu += ['REGION', 'REGION_VERT_NORMAL', 'FACE']
if mesh.total_edge_sel and (select_mode[0] or select_mode[1]):
menu += ['EDGE']
if mesh.total_vert_sel and select_mode[0]:
@@ -2379,6 +2546,7 @@ class VIEW3D_MT_edit_armature(Menu):
layout.operator("armature.merge")
layout.operator("armature.fill")
layout.operator("armature.delete")
+ layout.operator("armature.split")
layout.operator("armature.separate")
layout.separator()
@@ -2634,10 +2802,14 @@ class VIEW3D_PT_view3d_shading(Panel):
if not scene.render.use_shading_nodes:
col.prop(gs, "material_mode", text="")
col.prop(view, "show_textured_solid")
+
if view.viewport_shade == 'SOLID':
col.prop(view, "use_matcap")
if view.use_matcap:
col.template_icon_view(view, "matcap_icon")
+ elif view.viewport_shade == 'TEXTURED':
+ col.prop(view, "show_textured_shadeless")
+
col.prop(view, "show_backface_culling")
if obj and obj.mode == 'EDIT' and view.viewport_shade not in {'BOUNDBOX', 'WIREFRAME'}:
col.prop(view, "show_occlude_wire")
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index 0bb31f51c1b..cd3c238fe86 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -135,6 +135,7 @@ class VIEW3D_PT_tools_rigidbody(View3DPanel, Panel):
col.operator("rigidbody.shape_change", text="Change Shape")
col.operator("rigidbody.mass_calculate", text="Calculate Mass")
col.operator("rigidbody.object_settings_copy", text="Copy from Active")
+ col.operator("object.visual_transform_apply", text="Apply Transformation")
col.operator("rigidbody.bake_to_keyframes", text="Bake To Keyframes")
col.label(text="Constraints:")
col.operator("rigidbody.connect", text="Connect")
@@ -739,6 +740,7 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
col.prop(brush, "vertex_tool", text="Blend")
+
class VIEW3D_PT_tools_brush_overlay(Panel, View3DPaintPanel):
bl_label = "Overlay"
bl_options = {'DEFAULT_CLOSED'}
@@ -752,8 +754,7 @@ class VIEW3D_PT_tools_brush_overlay(Panel, View3DPaintPanel):
context.vertex_paint_object or
context.weight_paint_object or
context.image_paint_object))
-
-
+
def draw(self, context):
layout = self.layout
@@ -763,7 +764,7 @@ class VIEW3D_PT_tools_brush_overlay(Panel, View3DPaintPanel):
tex_slot_mask = brush.mask_texture_slot
col = layout.column()
-
+
col.label(text="Curve:")
row = col.row(align=True)
@@ -777,7 +778,7 @@ class VIEW3D_PT_tools_brush_overlay(Panel, View3DPaintPanel):
sub.prop(brush, "use_cursor_overlay_override", toggle=True, text="", icon='BRUSH_DATA')
col.active = brush.brush_capabilities.has_overlay
-
+
if context.image_paint_object or context.sculpt_object or context.vertex_paint_object:
col.label(text="Texture:")
row = col.row(align=True)
@@ -1114,6 +1115,7 @@ class VIEW3D_PT_tools_weightpaint(View3DPanel, Panel):
col.operator("object.vertex_group_mirror", text="Mirror")
col.operator("object.vertex_group_invert", text="Invert")
col.operator("object.vertex_group_clean", text="Clean")
+ col.operator("object.vertex_group_quantize", text="Quantize")
col.operator("object.vertex_group_levels", text="Levels")
col.operator("object.vertex_group_blend", text="Blend")
col.operator("object.vertex_group_transfer_weight", text="Transfer Weights")
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index 71ff547f6da..fdda753372f 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -141,6 +141,8 @@ shader_node_categories = [
NodeItem("ShaderNodeSqueeze"),
NodeItem("ShaderNodeSeparateRGB"),
NodeItem("ShaderNodeCombineRGB"),
+ NodeItem("ShaderNodeSeparateHSV"),
+ NodeItem("ShaderNodeCombineHSV"),
]),
ShaderOldNodeCategory("SH_GROUP", "Group", items=node_group_items),
ShaderOldNodeCategory("SH_LAYOUT", "Layout", items=[
diff --git a/release/scripts/templates_py/addon_add_object.py b/release/scripts/templates_py/addon_add_object.py
index 66da6a969c7..f0d8bede6d5 100644
--- a/release/scripts/templates_py/addon_add_object.py
+++ b/release/scripts/templates_py/addon_add_object.py
@@ -7,7 +7,6 @@ bl_info = {
"description": "Adds a new Mesh Object",
"warning": "",
"wiki_url": "",
- "tracker_url": "",
"category": "Add Mesh"}
diff --git a/release/scripts/templates_py/custom_nodes.py b/release/scripts/templates_py/custom_nodes.py
index 975ae1881f2..bf89c0debad 100644
--- a/release/scripts/templates_py/custom_nodes.py
+++ b/release/scripts/templates_py/custom_nodes.py
@@ -109,6 +109,11 @@ class MyCustomNode(Node, MyCustomTreeNode):
# myStringProperty button will only be visible in the sidebar
layout.prop(self, "myStringProperty")
+ # Optional: custom label
+ # Explicit user label overrides this, but here we can define a label dynamically
+ def draw_label(self):
+ return "I am a custom node"
+
### Node Categories ###
# Node categories are a python system for automatically
diff --git a/release/scripts/templates_py/operator_uv.py b/release/scripts/templates_py/operator_mesh_uv.py
index 96e624bc30d..96e624bc30d 100644
--- a/release/scripts/templates_py/operator_uv.py
+++ b/release/scripts/templates_py/operator_mesh_uv.py
diff --git a/release/scripts/templates_py/operator_modal_timer.py b/release/scripts/templates_py/operator_modal_timer.py
index 3088d59fbcf..4d36860b9e3 100644
--- a/release/scripts/templates_py/operator_modal_timer.py
+++ b/release/scripts/templates_py/operator_modal_timer.py
@@ -9,7 +9,7 @@ class ModalTimerOperator(bpy.types.Operator):
_timer = None
def modal(self, context, event):
- if event.type == 'ESC':
+ if event.type in {'RIGHTMOUSE', 'ESC'}:
return self.cancel(context)
if event.type == 'TIMER':
@@ -21,13 +21,14 @@ class ModalTimerOperator(bpy.types.Operator):
return {'PASS_THROUGH'}
def execute(self, context):
- self._timer = context.window_manager.event_timer_add(0.1, context.window)
- context.window_manager.modal_handler_add(self)
+ wm = context.window_manager
+ self._timer = wm.event_timer_add(0.1, context.window)
+ wm.modal_handler_add(self)
return {'RUNNING_MODAL'}
def cancel(self, context):
- context.window_manager.event_timer_remove(self._timer)
- return {'CANCELLED'}
+ wm = context.window_manager
+ wm.event_timer_remove(self._timer)
def register():
diff --git a/release/text/readme.html b/release/text/readme.html
index b15ea9b3847..7d79c8c3bad 100644
--- a/release/text/readme.html
+++ b/release/text/readme.html
@@ -4,64 +4,72 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
+ <meta name="Generator" content="Cocoa HTML Writer">
+ <meta name="CocoaVersion" content="1265">
<style type="text/css">
- p.title {margin-left: 20%; margin-right: 20%; text-align: center; font: 22.0px Helvetica}
- p.footer {margin-left: 20%; margin-right: 20%; text-align: center; font: 14.0px Helvetica; min-height: 14.0px}
- p.header {margin-left: 20%; margin-right: 20%; font: 16.0px Helvetica}
- p.body {margin-left: 20%; margin-right: 20%; font: 14.0px Helvetica}
+ p.p1 {margin: 0.0px 156.0px 22.0px 156.0px; text-align: center; font: 22.0px Helvetica}
+ p.p2 {margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Times; min-height: 14.0px}
+ p.p3 {margin: 0.0px 156.0px 16.0px 156.0px; font: 16.0px Helvetica}
+ p.p4 {margin: 0.0px 156.0px 14.0px 156.0px; font: 14.0px Helvetica}
+ p.p5 {margin: 0.0px 156.0px 14.0px 156.0px; font: 14.0px Helvetica; color: #0000ee}
+ p.p6 {margin: 0.0px 156.0px 14.0px 156.0px; text-align: center; font: 14.0px Helvetica}
+ span.s1 {text-decoration: underline ; color: #0000ee}
+ span.s2 {font: 14.0px 'Lucida Grande'}
+ span.s3 {color: #000000}
+ span.s4 {text-decoration: underline}
</style>
</head>
<body>
-<p class="title"><b>Blender 2.69</b></p>
-<p><br></p>
-<p class="header"><b>About</b></p>
-<p class="body">Welcome to Blender, the free, open source 3D application for modeling, animation, rendering, compositing, video editing and game creation. Blender is available for Linux, Mac OS X and Windows and has a large world-wide community.</p>
-<p class="body">Blender can be used freely for any purpose, including commercial use and distribution. It's free and open-source software, released under the GNU GPL licence. The entire source code is available on our website.</p>
-<p class="body">For more information, visit <a href="http://www.blender.org">blender.org</a>.</p>
-<p><br></p>
-<p class="header"><b>2.69</b></p>
-<p class="body">The Blender Foundation and online developer community is proud to present Blender 2.69. This release is the tenth official stable release of the Blender 2.6 series, in which we will refine the 2.5 series and add exciting new features. <a href="http://www.blender.org/development/release-logs/blender-269/">More information about this release</a>.</p>
-<p><br></p>
-<p class="header"><b>Bugs</b></p>
-<p class="body">Although Blender 2.69 is considered a stable release, you may encounter a bug. If you do, please help us by posting it in the bug tracker or using Help → Report a Bug from inside Blender. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.</p>
-<p><br></p>
-<p class="header"><b>Package Contents</b></p>
-<p class="body">The downloaded Blender package includes:</p>
-<p class="body"> • The Blender application for the chosen operating system.</p>
-<p class="body"> • Scripts for importing and exporting to other 3d formats.</p>
-<p class="body"> • Readme and copyright files.</p>
-<p><br></p>
-<p class="header"><b>Installation</b></p>
-<p class="body"><b>Windows: </b>The download .zip contains a Blender folder. You may put this anywhere on your hard drive. To launch Blender, double-click on Blender.exe.</p>
-<p class="body"><b>Linux: </b>Unpack the archive, then run the Blender executable.</p>
-<p class="body"><b>Mac OS X: </b>The downloaded package includes blender.app. Optionally copy this to your Applications folder, and add it to the dock by dragging it from there to the dock.</p>
-<p></p>
-<p class="body"><b>Installing Addons (all systems)</b> Addons can be installed from the user preferences addons section, download an addon as a .py or .zip file, then press the "Install Addon" button and select the file to install it.</p>
-<p><br></p>
-<p class="header"><b>Getting Started</b></p>
-<p class="body">When opening Blender, you’ll see large 3D view in the center, a Toolbar on the left, a Properties editor and an Outliner on the right and a Timeline at the bottom.</p>
-<p class="body">Orbit around in the 3D view by holding the middle mouse button and dragging. Alternatively, hold the alt key and drag the left mouse button. Additionally, hold Shift to pan the view and Ctrl to zoom.</p>
-<p class="body">Select objects using the right mouse button. With the object selected, perform actions by clicking any of the tool buttons on the left, or make changes to its properties by altering any of the setting on the right.</p>
-<p class="body">For more information on how to use Blender, <a href="http://www.blender.org/education-help/">watch tutorials</a> or <a href="http://wiki.blender.org/index.php/Doc:2.6/Manual">read the manual</a>.</p>
-<p><br></p>
-<p class="header"><b>Links</b></p>
-<p class="body">Users:</p>
-<p class="body"> General information <a href="http://www.blender.org">www.blender.org</a> <br>
- Full release log <a href="http://www.blender.org/development/release-logs/blender-269/">www.blender.org/development/release-logs/blender-269/</a><br>
- Tutorials <a href="http://www.blender.org/education-help/">www.blender.org/education-help/</a> <br>
- Manual <a href="http://wiki.blender.org/index.php/Doc:2.6/Manual">wiki.blender.org/index.php/Doc:2.6/Manual</a><br>
- User Forum <a href="http://www.blenderartists.org">www.blenderartists.org</a><br>
- IRC <a href="irc://irc.freenode.net/#blenderchat">#blenderchat</a> or <a href="irc://irc.freenode.net/#blender">#blender</a> on irc.freenode.net<br>
-</p>
-<p class="body">Developers:</p>
-<p class="body"> Development <a href="http://www.blender.org/development/">www.blender.org/development/</a><br>
- SVN and Bug Tracker <a href="http://projects.blender.org">projects.blender.org</a><br>
- Get Involved <a href="http://www.blender.org/community/get-involved/">www.blender.org/community/get-involved/</a><br>
- IRC <a href="irc://irc.freenode.net/#blendercoders">#blendercoders on irc.freenode.net</a></p>
-<p><br></p>
-<p><br></p><p class="footer">Blender is open-source and free for all to use.</p>
-<p><br></p>
-<p class="footer">Enjoy.</p>
-<p><br></p>
+<p class="p1"><b>Blender 2.70</b></p>
+<p class="p2"><br></p>
+<p class="p3"><b>About</b></p>
+<p class="p4">Welcome to Blender, the free, open source 3D application for modeling, animation, rendering, compositing, video editing and game creation. Blender is available for Linux, Mac OS X and Windows and has a large world-wide community.</p>
+<p class="p4">Blender can be used freely for any purpose, including commercial use and distribution. It's free and open-source software, released under the GNU GPL licence. The entire source code is available on our website.</p>
+<p class="p4">For more information, visit <a href="http://www.blender.org/"><span class="s1">blender.org</span></a>.</p>
+<p class="p2"><br></p>
+<p class="p3"><b>2.70</b></p>
+<p class="p4">The Blender Foundation and online developer community is proud to present Blender 2.70. This release is the first official stable release of the Blender 2.7 series. <a href="http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.70"><span class="s1">More information about this release</span></a>.</p>
+<p class="p2"><br></p>
+<p class="p3"><b>Bugs</b></p>
+<p class="p4">Although Blender 2.70 is considered a stable release, you may encounter a bug. If you do, please help us by posting it in the bug tracker or using Help <span class="s2">→</span> Report a Bug from inside Blender. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.</p>
+<p class="p2"><br></p>
+<p class="p3"><b>Package Contents</b></p>
+<p class="p4">The downloaded Blender package includes:</p>
+<p class="p4">• The Blender application for the chosen operating system.</p>
+<p class="p4">• Scripts for importing and exporting to other 3d formats.</p>
+<p class="p4">• Readme and copyright files.</p>
+<p class="p2"><br></p>
+<p class="p3"><b>Installation</b></p>
+<p class="p4"><b>Windows: </b>The download .zip contains a Blender folder. You may put this anywhere on your hard drive. To launch Blender, double-click on Blender.exe.</p>
+<p class="p4"><b>Linux: </b>Unpack the archive, then run the Blender executable.</p>
+<p class="p4"><b>Mac OS X: </b>The downloaded package includes blender.app. Optionally copy this to your Applications folder, and add it to the dock by dragging it from there to the dock.</p>
+<p class="p2"><br></p>
+<p class="p4"><b>Installing Addons (all systems)</b> Addons can be installed from the user preferences addons section, download an addon as a .py or .zip file, then press the "Install Addon" button and select the file to install it.</p>
+<p class="p2"><br></p>
+<p class="p3"><b>Getting Started</b></p>
+<p class="p4">When opening Blender, you’ll see large 3D view in the center, a Toolbar on the left, a Properties editor and an Outliner on the right and a Timeline at the bottom.</p>
+<p class="p4">Orbit around in the 3D view by holding the middle mouse button and dragging. Alternatively, hold the alt key and drag the left mouse button. Additionally, hold Shift to pan the view and Ctrl to zoom.</p>
+<p class="p4">Select objects using the right mouse button. With the object selected, perform actions by clicking any of the tool buttons on the left, or make changes to its properties by altering any of the setting on the right.</p>
+<p class="p4">For more information on how to use Blender, <a href="http://www.blender.org/support/"><span class="s1">check out the support page</span></a>.</p>
+<p class="p2"><br></p>
+<p class="p3"><b>Links</b></p>
+<p class="p4">Users:</p>
+<p class="p5"><span class="s3">General information <a href="http://www.blender.org/"><span class="s4">www.blender.org</span></a> <br>
+Full release log <a href="http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.70"><span class="s4">wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.70</span></a><br>
+Tutorials <a href="http://www.blender.org/support/tutorials/"><span class="s4">www.blender.org/support/tutorials/</span></a> <br>
+Manual <a href="http://wiki.blender.org/index.php/Doc:2.6/Manual"><span class="s4">wiki.blender.org/index.php/Doc:2.6/Manual</span></a><br>
+User Forum <a href="http://www.blenderartists.org/"><span class="s4">www.blenderartists.org</span></a><br>
+IRC <a href="irc://irc.freenode.net/#blenderchat"><span class="s4">#blenderchat</span></a> or <a href="irc://irc.freenode.net/#blender"><span class="s4">#blender</span></a> on irc.freenode.net</span></p>
+<p class="p4">Developers:</p>
+<p class="p5"><span class="s3">Development <a href="http://www.blender.org/get-involved/developers/"><span class="s4">www.blender.org/get-involved/developers/</span></a><br>
+GIT and Bug Tracker <a href="http://developer.blender.org/"><span class="s4">developer.blender.org/</span></a><br>
+Get Involved <a href="http://www.blender.org/get-involved/"><span class="s4">www.blender.org/get-involved/</span></a><br>
+IRC <a href="irc://irc.freenode.net/#blendercoders"><span class="s4">#blendercoders on irc.freenode.net</span></a></span></p>
+<p class="p2"><br></p>
+<p class="p2"><br></p>
+<p class="p6">Blender is open-source and free for all to use.</p>
+<p class="p2"><br></p>
+<p class="p6">Enjoy.</p>
+<p class="p2"><br></p>
</body>
</html>