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:
authorJoerg Mueller <nexyon@gmail.com>2011-08-16 18:11:58 +0400
committerJoerg Mueller <nexyon@gmail.com>2011-08-16 18:11:58 +0400
commit23807d1fb43de44ca7c4db5dc7bd92178f4b6a14 (patch)
tree6d2e17c8405789363e69df000cf14207110428b2
parent02d2472baacd8ac091a29392a2bc9ac8693fb5e7 (diff)
parentdddfb5e1738830c325e796a474d0ea14d64654f3 (diff)
Merging trunk up to r39447.
-rw-r--r--GNUmakefile81
-rw-r--r--SConstruct3
-rw-r--r--build_files/buildbot/master.cfg2
-rw-r--r--build_files/cmake/config/blender_headless.cmake24
-rw-r--r--build_files/cmake/config/blender_lite.cmake43
-rw-r--r--build_files/cmake/config/bpy_module.cmake34
-rw-r--r--build_files/scons/config/darwin-config.py5
-rw-r--r--build_files/scons/tools/btools.py3
-rw-r--r--intern/ghost/intern/GHOST_NDOFManagerCocoa.mm28
-rw-r--r--intern/ghost/intern/GHOST_SystemSDL.cpp20
-rw-r--r--intern/ghost/intern/GHOST_WindowWin32.cpp5
-rw-r--r--release/scripts/modules/bpy/__init__.py14
-rw-r--r--release/scripts/modules/bpy_extras/io_utils.py10
-rw-r--r--release/scripts/startup/bl_operators/add_mesh_torus.py3
-rw-r--r--release/scripts/startup/bl_operators/animsys_update.py3
-rw-r--r--release/scripts/startup/bl_operators/image.py9
-rw-r--r--release/scripts/startup/bl_operators/mesh.py5
-rw-r--r--release/scripts/startup/bl_operators/nla.py3
-rw-r--r--release/scripts/startup/bl_operators/object.py19
-rw-r--r--release/scripts/startup/bl_operators/object_align.py3
-rw-r--r--release/scripts/startup/bl_operators/object_quick_effects.py9
-rw-r--r--release/scripts/startup/bl_operators/object_randomize_transform.py3
-rw-r--r--release/scripts/startup/bl_operators/presets.py23
-rw-r--r--release/scripts/startup/bl_operators/screen_play_rendered_anim.py3
-rw-r--r--release/scripts/startup/bl_operators/sequencer.py7
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_follow_active.py3
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_lightmap.py3
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_smart_project.py52
-rw-r--r--release/scripts/startup/bl_operators/vertexpaint_dirt.py3
-rw-r--r--release/scripts/startup/bl_operators/wm.py65
-rw-r--r--release/scripts/startup/bl_ui/properties_data_armature.py23
-rw-r--r--release/scripts/startup/bl_ui/properties_data_bone.py17
-rw-r--r--release/scripts/startup/bl_ui/properties_data_camera.py9
-rw-r--r--release/scripts/startup/bl_ui/properties_data_curve.py23
-rw-r--r--release/scripts/startup/bl_ui/properties_data_empty.py3
-rw-r--r--release/scripts/startup/bl_ui/properties_data_lamp.py23
-rw-r--r--release/scripts/startup/bl_ui/properties_data_lattice.py7
-rw-r--r--release/scripts/startup/bl_ui/properties_data_mesh.py25
-rw-r--r--release/scripts/startup/bl_ui/properties_data_metaball.py11
-rw-r--r--release/scripts/startup/bl_ui/properties_data_modifier.py5
-rw-r--r--release/scripts/startup/bl_ui/properties_game.py25
-rw-r--r--release/scripts/startup/bl_ui/properties_material.py53
-rw-r--r--release/scripts/startup/bl_ui/properties_object.py25
-rw-r--r--release/scripts/startup/bl_ui/properties_object_constraint.py5
-rw-r--r--release/scripts/startup/bl_ui/properties_particle.py31
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_cloth.py15
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_common.py3
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_field.py5
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_fluid.py9
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_smoke.py11
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_softbody.py15
-rw-r--r--release/scripts/startup/bl_ui/properties_render.py37
-rw-r--r--release/scripts/startup/bl_ui/properties_scene.py19
-rw-r--r--release/scripts/startup/bl_ui/properties_texture.py51
-rw-r--r--release/scripts/startup/bl_ui/properties_world.py21
-rw-r--r--release/scripts/startup/bl_ui/space_console.py28
-rw-r--r--release/scripts/startup/bl_ui/space_dopesheet.py44
-rw-r--r--release/scripts/startup/bl_ui/space_filebrowser.py3
-rw-r--r--release/scripts/startup/bl_ui/space_graph.py34
-rw-r--r--release/scripts/startup/bl_ui/space_image.py116
-rw-r--r--release/scripts/startup/bl_ui/space_info.py39
-rw-r--r--release/scripts/startup/bl_ui/space_logic.py21
-rw-r--r--release/scripts/startup/bl_ui/space_nla.py34
-rw-r--r--release/scripts/startup/bl_ui/space_node.py41
-rw-r--r--release/scripts/startup/bl_ui/space_outliner.py38
-rw-r--r--release/scripts/startup/bl_ui/space_sequencer.py73
-rw-r--r--release/scripts/startup/bl_ui/space_text.py31
-rw-r--r--release/scripts/startup/bl_ui/space_time.py20
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py43
-rw-r--r--release/scripts/startup/bl_ui/space_userpref_keymap.py25
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py182
-rw-r--r--release/scripts/startup/bl_ui/space_view3d_toolbar.py55
-rw-r--r--source/blender/blenkernel/BKE_DerivedMesh.h4
-rw-r--r--source/blender/blenkernel/BKE_blender.h2
-rw-r--r--source/blender/blenkernel/BKE_modifier.h15
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c3
-rw-r--r--source/blender/blenkernel/intern/cdderivedmesh.c77
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c7
-rw-r--r--source/blender/blenkernel/intern/displist.c5
-rw-r--r--source/blender/blenkernel/intern/fcurve.c2
-rw-r--r--source/blender/blenkernel/intern/modifier.c12
-rw-r--r--source/blender/blenkernel/intern/nla.c2
-rw-r--r--source/blender/blenkernel/intern/node.c4
-rw-r--r--source/blender/blenkernel/intern/sequencer.c1
-rw-r--r--source/blender/blenkernel/intern/texture.c32
-rw-r--r--source/blender/blenlib/BLI_ghash.h141
-rw-r--r--source/blender/blenlib/BLI_utildefines.h6
-rw-r--r--source/blender/blenlib/intern/BLI_ghash.c92
-rw-r--r--source/blender/editors/armature/poseSlide.c2
-rw-r--r--source/blender/editors/gpencil/gpencil_paint.c7
-rw-r--r--source/blender/editors/include/ED_node.h6
-rw-r--r--source/blender/editors/interface/interface_intern.h5
-rw-r--r--source/blender/editors/interface/interface_layout.c66
-rw-r--r--source/blender/editors/interface/interface_regions.c6
-rw-r--r--source/blender/editors/interface/interface_utils.c2
-rw-r--r--source/blender/editors/mesh/editmesh.c5
-rw-r--r--source/blender/editors/mesh/editmesh_mods.c2
-rw-r--r--source/blender/editors/mesh/editmesh_tools.c2
-rw-r--r--source/blender/editors/object/object_add.c2
-rw-r--r--source/blender/editors/object/object_edit.c12
-rw-r--r--source/blender/editors/object/object_transform.c15
-rw-r--r--source/blender/editors/render/render_update.c15
-rw-r--r--source/blender/editors/space_console/console_ops.c7
-rw-r--r--source/blender/editors/space_file/file_ops.c9
-rw-r--r--source/blender/editors/space_file/filelist.c22
-rw-r--r--source/blender/editors/space_nla/nla_edit.c2
-rw-r--r--source/blender/editors/space_node/node_edit.c71
-rw-r--r--source/blender/editors/space_node/node_header.c4
-rw-r--r--source/blender/editors/space_node/node_intern.h4
-rw-r--r--source/blender/editors/space_node/node_select.c9
-rw-r--r--source/blender/editors/space_outliner/outliner_select.c4
-rw-r--r--source/blender/editors/space_sequencer/sequencer_add.c20
-rw-r--r--source/blender/editors/space_sequencer/sequencer_draw.c2
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c509
-rw-r--r--source/blender/editors/space_sequencer/sequencer_intern.h7
-rw-r--r--source/blender/editors/space_sequencer/sequencer_ops.c9
-rw-r--r--source/blender/editors/space_sequencer/sequencer_select.c2
-rw-r--r--source/blender/editors/space_text/text_python.c5
-rw-r--r--source/blender/editors/space_view3d/drawmesh.c141
-rw-r--r--source/blender/editors/space_view3d/drawobject.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c1
-rw-r--r--source/blender/gpu/GPU_extensions.h1
-rw-r--r--source/blender/imbuf/intern/anim_movie.c2
-rw-r--r--source/blender/imbuf/intern/filter.c12
-rw-r--r--source/blender/makesdna/DNA_modifier_types.h4
-rw-r--r--source/blender/makesrna/RNA_access.h2
-rw-r--r--source/blender/makesrna/RNA_types.h2
-rw-r--r--source/blender/makesrna/intern/rna_access.c34
-rw-r--r--source/blender/makesrna/intern/rna_modifier.c7
-rw-r--r--source/blender/makesrna/intern/rna_object.c9
-rw-r--r--source/blender/makesrna/intern/rna_wm.c1
-rw-r--r--source/blender/modifiers/intern/MOD_armature.c1
-rw-r--r--source/blender/modifiers/intern/MOD_array.c1
-rw-r--r--source/blender/modifiers/intern/MOD_bevel.c1
-rw-r--r--source/blender/modifiers/intern/MOD_boolean.c1
-rw-r--r--source/blender/modifiers/intern/MOD_build.c3
-rw-r--r--source/blender/modifiers/intern/MOD_cast.c1
-rw-r--r--source/blender/modifiers/intern/MOD_cloth.c1
-rw-r--r--source/blender/modifiers/intern/MOD_collision.c1
-rw-r--r--source/blender/modifiers/intern/MOD_curve.c1
-rw-r--r--source/blender/modifiers/intern/MOD_decimate.c1
-rw-r--r--source/blender/modifiers/intern/MOD_displace.c7
-rw-r--r--source/blender/modifiers/intern/MOD_edgesplit.c1
-rw-r--r--source/blender/modifiers/intern/MOD_explode.c1
-rw-r--r--source/blender/modifiers/intern/MOD_fluidsim.c1
-rw-r--r--source/blender/modifiers/intern/MOD_hook.c1
-rw-r--r--source/blender/modifiers/intern/MOD_lattice.c1
-rw-r--r--source/blender/modifiers/intern/MOD_mask.c1
-rw-r--r--source/blender/modifiers/intern/MOD_meshdeform.c1
-rw-r--r--source/blender/modifiers/intern/MOD_mirror.c1
-rw-r--r--source/blender/modifiers/intern/MOD_multires.c1
-rw-r--r--source/blender/modifiers/intern/MOD_none.c1
-rw-r--r--source/blender/modifiers/intern/MOD_particleinstance.c1
-rw-r--r--source/blender/modifiers/intern/MOD_particlesystem.c1
-rw-r--r--source/blender/modifiers/intern/MOD_screw.c1
-rw-r--r--source/blender/modifiers/intern/MOD_shapekey.c3
-rw-r--r--source/blender/modifiers/intern/MOD_shrinkwrap.c1
-rw-r--r--source/blender/modifiers/intern/MOD_simpledeform.c1
-rw-r--r--source/blender/modifiers/intern/MOD_smoke.c1
-rw-r--r--source/blender/modifiers/intern/MOD_smooth.c1
-rw-r--r--source/blender/modifiers/intern/MOD_softbody.c1
-rw-r--r--source/blender/modifiers/intern/MOD_solidify.c29
-rw-r--r--source/blender/modifiers/intern/MOD_subsurf.c2
-rw-r--r--source/blender/modifiers/intern/MOD_surface.c1
-rw-r--r--source/blender/modifiers/intern/MOD_uvproject.c1
-rw-r--r--source/blender/modifiers/intern/MOD_warp.c6
-rw-r--r--source/blender/modifiers/intern/MOD_wave.c7
-rw-r--r--source/blender/python/intern/bpy_rna.c10
-rw-r--r--source/blender/python/intern/bpy_rna_anim.c2
-rw-r--r--source/blender/python/mathutils/mathutils_Vector.c117
-rw-r--r--source/blender/render/intern/source/rayshade.c2
-rw-r--r--source/blender/windowmanager/WM_api.h1
-rw-r--r--source/blender/windowmanager/intern/wm_files.c3
-rw-r--r--source/blender/windowmanager/intern/wm_keymap.c6
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c9
-rw-r--r--source/blender/windowmanager/intern/wm_subwindow.c3
-rw-r--r--source/gameengine/Ketsji/KX_Light.cpp4
177 files changed, 1938 insertions, 1547 deletions
diff --git a/GNUmakefile b/GNUmakefile
index b6741d7e5f0..8446541cfae 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -35,17 +35,33 @@ OS_NCASE:=$(shell uname -s | tr '[A-Z]' '[a-z]')
# Source and Build DIR's
BLENDER_DIR:=$(shell pwd -P)
BUILD_DIR:=$(shell dirname $(BLENDER_DIR))/build/$(OS_NCASE)
+BUILD_TYPE:=Release
+BUILD_CMAKE_ARGS:=""
+# -----------------------------------------------------------------------------
+# additional targets for the build configuration
+
# support 'make debug'
ifneq "$(findstring debug, $(MAKECMDGOALS))" ""
BUILD_DIR:=$(BUILD_DIR)_debug
BUILD_TYPE:=Debug
-else
- BUILD_TYPE:=Release
+endif
+ifneq "$(findstring lite, $(MAKECMDGOALS))" ""
+ BUILD_DIR:=$(BUILD_DIR)_lite
+ BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C$(BLENDER_DIR)/build_files/cmake/config/blender_lite.cmake
+endif
+ifneq "$(findstring headless, $(MAKECMDGOALS))" ""
+ BUILD_DIR:=$(BUILD_DIR)_bpy
+ BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C$(BLENDER_DIR)/build_files/cmake/config/blender_headless.cmake
+endif
+ifneq "$(findstring bpy, $(MAKECMDGOALS))" ""
+ BUILD_DIR:=$(BUILD_DIR)_bpy
+ BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C$(BLENDER_DIR)/build_files/cmake/config/bpy_module.cmake
endif
+# -----------------------------------------------------------------------------
# Get the number of cores for threaded build
NPROCS:=1
ifeq ($(OS), Linux)
@@ -61,14 +77,14 @@ ifeq ($(OS), NetBSD)
NPROCS:=$(shell sysctl -a | grep "hw.ncpu " | cut -d" " -f3 )
endif
-
+# -----------------------------------------------------------------------------
# Build Blender
all:
@echo
@echo Configuring Blender ...
if test ! -f $(BUILD_DIR)/CMakeCache.txt ; then \
- cmake -H$(BLENDER_DIR) -B$(BUILD_DIR) -DCMAKE_BUILD_TYPE:STRING=$(BUILD_TYPE) ; \
+ cmake $(BUILD_CMAKE_ARGS) -H$(BLENDER_DIR) -B$(BUILD_DIR) -DCMAKE_BUILD_TYPE:STRING=$(BUILD_TYPE); \
fi
@echo
@@ -80,9 +96,40 @@ all:
@echo
debug: all
- # pass
-
-# package types
+lite: all
+headless: all
+bpy: all
+
+# -----------------------------------------------------------------------------
+# Helo for build targets
+help:
+ @echo ""
+ @echo "Convenience targets provided for building blender, (multiple at once can be used)"
+ @echo " * debug - build a debug binary"
+ @echo " * lite - disable non essential features for a smaller binary and faster build"
+ @echo " * headless - build without an interface (renderfarm or server automation)"
+ @echo " * bpy - build as a python module which can be loaded from python directly"
+ @echo ""
+ @echo "Project Files for IDE's"
+ @echo " * project_qtcreator - QtCreator Project Files"
+ @echo " * project_netbeans - NetBeans Project Files"
+ @echo " * project_eclipse - Eclipse CDT4 Project Files"
+ @echo ""
+ @echo "Package Targets"
+ @echo " * package_debian - build a debian package"
+ @echo " * package_pacman - build an arch linux pacmanpackage"
+ @echo " * package_archive - build an archive package"
+ @echo ""
+ @echo "Testing Targets (not assosiated with building blender)"
+ @echo " * test - run ctest, currently tests import/export, operator execution and that python modules load"
+ @echo " * test_cmake - runs our own cmake file checker which detects errors in the cmake file list definitions"
+ @echo " * test_pep8 - checks all python script are pep8 which are tagged to use the stricter formatting"
+ @echo " * test_deprecated - checks for deprecation tags in our code which may need to be removed"
+ @echo ""
+
+# -----------------------------------------------------------------------------
+# Packages
+#
package_debian:
cd build_files/package_spec ; DEB_BUILD_OPTIONS="parallel=$(NPROCS)" sh ./build_debian.sh
@@ -93,7 +140,10 @@ package_archive:
make -C $(BUILD_DIR) -s package_archive
@echo archive in "$(BUILD_DIR)/release"
-# forward build targets
+
+# -----------------------------------------------------------------------------
+# Tests
+#
test:
cd $(BUILD_DIR) ; ctest . --output-on-failure
@@ -111,6 +161,21 @@ test_cmake:
test_deprecated:
python3 source/tests/check_deprecated.py
+
+# -----------------------------------------------------------------------------
+# Project Files
+#
+
+project_qtcreator:
+ python3 build_files/cmake/cmake_qtcreator_project.py $(BUILD_DIR)
+
+project_netbeans:
+ python3 build_files/cmake/cmake_netbeans_project.py $(BUILD_DIR)
+
+project_eclipse:
+ cmake -G"Eclipse CDT4 - Unix Makefiles" -H$(BLENDER_DIR) -B$(BUILD_DIR)
+
+
clean:
$(MAKE) -C $(BUILD_DIR) clean
diff --git a/SConstruct b/SConstruct
index 7b25f744103..81c12c7c318 100644
--- a/SConstruct
+++ b/SConstruct
@@ -268,7 +268,8 @@ if env['OURPLATFORM']=='darwin':
if env['WITH_BF_3DMOUSE'] == 1 and not os.path.exists('/Library/Frameworks/3DconnexionClient.framework'):
print "3D_CONNEXION_CLIENT_LIBRARY not found, disabling WITH_BF_3DMOUSE" # avoid build errors !
env['WITH_BF_3DMOUSE'] = 0
- env['FOUND_NDOF_DRIVERS'] = 0
+ else:
+ env.Append(LINKFLAGS=['-weak_framework','3DconnexionClient'])
if env['WITH_BF_OPENMP'] == 1:
diff --git a/build_files/buildbot/master.cfg b/build_files/buildbot/master.cfg
index 1e70ec5e13e..5aa5a43abf7 100644
--- a/build_files/buildbot/master.cfg
+++ b/build_files/buildbot/master.cfg
@@ -116,7 +116,7 @@ add_builder(c, 'linux_x86_64_scons', '', generic_builder)
add_builder(c, 'salad_linux_x86_64_scons', '', generic_builder, 'soc-2011-salad')
add_builder(c, 'win32_scons', 'windows', generic_builder)
add_builder(c, 'salad_win32_scons', 'windows', generic_builder, 'soc-2011-salad')
-add_builder(c, 'win64_scons', 'windows', generic_builder)
+add_builder(c, 'win64_scons', 'win64', generic_builder)
#add_builder(c, 'freebsd_i386_cmake', '', generic_builder)
#add_builder(c, 'freebsd_x86_64_cmake', '', generic_builder)
diff --git a/build_files/cmake/config/blender_headless.cmake b/build_files/cmake/config/blender_headless.cmake
new file mode 100644
index 00000000000..bd69eed30dd
--- /dev/null
+++ b/build_files/cmake/config/blender_headless.cmake
@@ -0,0 +1,24 @@
+# headless configuration, useful in for servers or renderfarms
+# builds without a windowing system (X11/Windows/Cocoa).
+#
+# Example usage:
+# cmake -C../blender/build_files/cmake/config/blender_headless.cmake ../blender
+#
+
+set(WITH_HEADLESS ON CACHE FORCE BOOL)
+set(WITH_GAMEENGINE OFF CACHE FORCE BOOL)
+
+# disable audio, its possible some devs may want this but for now disable
+# so the python module doesnt hold the audio device and loads quickly.
+set(WITH_AUDASPACE OFF CACHE FORCE BOOL)
+set(WITH_SAMPLERATE OFF CACHE FORCE BOOL)
+set(WITH_FFTW3 OFF CACHE FORCE BOOL)
+set(WITH_JACK OFF CACHE FORCE BOOL)
+set(WITH_SDL OFF CACHE FORCE BOOL)
+set(WITH_OPENAL OFF CACHE FORCE BOOL)
+set(WITH_CODEC_FFMPEG OFF CACHE FORCE BOOL)
+set(WITH_CODEC_SNDFILE OFF CACHE FORCE BOOL)
+
+# other features which are not especially useful as a python module
+set(WITH_X11_XINPUT OFF CACHE FORCE BOOL)
+set(WITH_INPUT_NDOF OFF CACHE FORCE BOOL)
diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake
new file mode 100644
index 00000000000..d2b791baede
--- /dev/null
+++ b/build_files/cmake/config/blender_lite.cmake
@@ -0,0 +1,43 @@
+# turn everything OFF CACHE FORCE BOOL) except for python which defaults to ON
+# and is needed for the UI
+#
+# Example usage:
+# cmake -C../blender/build_files/cmake/config/blender_lite.cmake ../blender
+#
+
+set(WITH_INSTALL_PORTABLE ON CACHE FORCE BOOL)
+
+set(WITH_BUILDINFO OFF CACHE FORCE BOOL)
+set(WITH_BUILTIN_GLEW OFF CACHE FORCE BOOL)
+set(WITH_BULLET OFF CACHE FORCE BOOL)
+set(WITH_CODEC_FFMPEG OFF CACHE FORCE BOOL)
+set(WITH_CODEC_SNDFILE OFF CACHE FORCE BOOL)
+set(WITH_FFTW3 OFF CACHE FORCE BOOL)
+set(WITH_GAMEENGINE OFF CACHE FORCE BOOL)
+set(WITH_IK_ITASC OFF CACHE FORCE BOOL)
+set(WITH_IMAGE_CINEON OFF CACHE FORCE BOOL)
+set(WITH_IMAGE_DDS OFF CACHE FORCE BOOL)
+set(WITH_IMAGE_FRAMESERVER OFF CACHE FORCE BOOL)
+set(WITH_IMAGE_HDR OFF CACHE FORCE BOOL)
+set(WITH_IMAGE_OPENEXR OFF CACHE FORCE BOOL)
+set(WITH_IMAGE_OPENJPEG OFF CACHE FORCE BOOL)
+set(WITH_IMAGE_REDCODE OFF CACHE FORCE BOOL)
+set(WITH_IMAGE_TIFF OFF CACHE FORCE BOOL)
+set(WITH_INPUT_NDOF OFF CACHE FORCE BOOL)
+set(WITH_INTERNATIONAL OFF CACHE FORCE BOOL)
+set(WITH_JACK OFF CACHE FORCE BOOL)
+set(WITH_LZMA OFF CACHE FORCE BOOL)
+set(WITH_LZO OFF CACHE FORCE BOOL)
+set(WITH_MOD_BOOLEAN OFF CACHE FORCE BOOL)
+set(WITH_MOD_DECIMATE OFF CACHE FORCE BOOL)
+set(WITH_MOD_FLUID OFF CACHE FORCE BOOL)
+set(WITH_MOD_SMOKE OFF CACHE FORCE BOOL)
+set(WITH_AUDASPACE OFF CACHE FORCE BOOL)
+set(WITH_OPENAL OFF CACHE FORCE BOOL)
+set(WITH_OPENCOLLADA OFF CACHE FORCE BOOL)
+set(WITH_OPENMP OFF CACHE FORCE BOOL)
+set(WITH_PYTHON_INSTALL OFF CACHE FORCE BOOL)
+set(WITH_RAYOPTIMIZATION OFF CACHE FORCE BOOL)
+set(WITH_SAMPLERATE OFF CACHE FORCE BOOL)
+set(WITH_SDL OFF CACHE FORCE BOOL)
+set(WITH_X11_XINPUT OFF CACHE FORCE BOOL)
diff --git a/build_files/cmake/config/bpy_module.cmake b/build_files/cmake/config/bpy_module.cmake
new file mode 100644
index 00000000000..5392705f0dc
--- /dev/null
+++ b/build_files/cmake/config/bpy_module.cmake
@@ -0,0 +1,34 @@
+# defaults for building blender as a python module 'bpy'
+#
+# Example usage:
+# cmake -C../blender/build_files/cmake/config/bpy_module.cmake ../blender
+#
+
+set(WITH_PYTHON_MODULE ON CACHE FORCE BOOL)
+
+# install into the systems python dir
+set(WITH_INSTALL_PORTABLE OFF CACHE FORCE BOOL)
+
+# no point int copying python into python
+set(WITH_PYTHON_INSTALL OFF CACHE FORCE BOOL)
+
+# dont build the game engine
+set(WITH_GAMEENGINE OFF CACHE FORCE BOOL)
+
+# disable audio, its possible some devs may want this but for now disable
+# so the python module doesnt hold the audio device and loads quickly.
+set(WITH_AUDASPACE OFF CACHE FORCE BOOL)
+set(WITH_SAMPLERATE OFF CACHE FORCE BOOL)
+set(WITH_FFTW3 OFF CACHE FORCE BOOL)
+set(WITH_JACK OFF CACHE FORCE BOOL)
+set(WITH_SDL OFF CACHE FORCE BOOL)
+set(WITH_OPENAL OFF CACHE FORCE BOOL)
+set(WITH_CODEC_FFMPEG OFF CACHE FORCE BOOL)
+set(WITH_CODEC_SNDFILE OFF CACHE FORCE BOOL)
+
+# other features which are not especially useful as a python module
+set(WITH_X11_XINPUT OFF CACHE FORCE BOOL)
+set(WITH_INPUT_NDOF OFF CACHE FORCE BOOL)
+set(WITH_OPENCOLLADA OFF CACHE FORCE BOOL)
+set(WITH_INTERNATIONAL OFF CACHE FORCE BOOL)
+set(WITH_BULLET OFF CACHE FORCE BOOL)
diff --git a/build_files/scons/config/darwin-config.py b/build_files/scons/config/darwin-config.py
index 1d47892c389..2737fda62e2 100644
--- a/build_files/scons/config/darwin-config.py
+++ b/build_files/scons/config/darwin-config.py
@@ -284,7 +284,7 @@ if MACOSX_ARCHITECTURE == 'i386':
elif MACOSX_ARCHITECTURE == 'x86_64':
BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-msse2']
-# SpaceNavigator and related 3D mice
+# SpaceNavigator and related 3D mice, driver must be 3DxWare 10 Beta 4 (Mac OS X) or later !
WITH_BF_3DMOUSE = True
#############################################################################
@@ -315,9 +315,6 @@ if WITH_BF_QUICKTIME:
else:
PLATFORM_LINKFLAGS = PLATFORM_LINKFLAGS+['-framework','QuickTime']
-if FOUND_NDOF_DRIVERS:
- PLATFORM_LINKFLAGS = PLATFORM_LINKFLAGS + ['-weak_framework','3DconnexionClient']
-
#note to build succesfully on 10.3.9 SDK you need to patch 10.3.9 by adding the SystemStubs.a lib from 10.4
LLIBS = ['stdc++', 'SystemStubs']
diff --git a/build_files/scons/tools/btools.py b/build_files/scons/tools/btools.py
index aac16555df9..25e0582c536 100644
--- a/build_files/scons/tools/btools.py
+++ b/build_files/scons/tools/btools.py
@@ -136,7 +136,7 @@ def validate_arguments(args, bc):
'BF_NO_ELBEEM',
'WITH_BF_CXX_GUARDEDALLOC',
'WITH_BF_JEMALLOC', 'WITH_BF_STATICJEMALLOC', 'BF_JEMALLOC', 'BF_JEMALLOC_INC', 'BF_JEMALLOC_LIBPATH', 'BF_JEMALLOC_LIB', 'BF_JEMALLOC_LIB_STATIC',
- 'BUILDBOT_BRANCH', 'WITH_BF_3DMOUSE', 'FOUND_NDOF_DRIVERS', 'WITH_BF_STATIC3DMOUSE', 'BF_3DMOUSE', 'BF_3DMOUSE_INC', 'BF_3DMOUSE_LIB', 'BF_3DMOUSE_LIBPATH', 'BF_3DMOUSE_LIB_STATIC'
+ 'BUILDBOT_BRANCH', 'WITH_BF_3DMOUSE', 'WITH_BF_STATIC3DMOUSE', 'BF_3DMOUSE', 'BF_3DMOUSE_INC', 'BF_3DMOUSE_LIB', 'BF_3DMOUSE_LIBPATH', 'BF_3DMOUSE_LIB_STATIC'
]
# Have options here that scons expects to be lists
@@ -439,7 +439,6 @@ def read_opts(env, cfg, args):
(BoolVariable('WITH_BF_NOBLENDER', 'Do not build blender if true', False)),
(BoolVariable('WITH_BF_3DMOUSE', 'Build blender with support of 3D mouses', False)),
- (BoolVariable('FOUND_NDOF_DRIVERS', 'We detected NDOF libs or framework', False)),
(BoolVariable('WITH_BF_STATIC3DMOUSE', 'Staticly link to 3d mouse library', False)),
('BF_3DMOUSE', '3d mouse library base path', ''),
('BF_3DMOUSE_INC', '3d mouse library include path', ''),
diff --git a/intern/ghost/intern/GHOST_NDOFManagerCocoa.mm b/intern/ghost/intern/GHOST_NDOFManagerCocoa.mm
index 1d90b6daa68..409ed953134 100644
--- a/intern/ghost/intern/GHOST_NDOFManagerCocoa.mm
+++ b/intern/ghost/intern/GHOST_NDOFManagerCocoa.mm
@@ -159,18 +159,22 @@ GHOST_NDOFManagerCocoa::GHOST_NDOFManagerCocoa(GHOST_System& sys)
GHOST_NDOFManagerCocoa::~GHOST_NDOFManagerCocoa()
{
- UnregisterConnexionClient(m_clientID);
- CleanupConnexionHandlers();
- ghost_system = NULL;
- ndof_manager = NULL;
+ if (available())
+ {
+ UnregisterConnexionClient(m_clientID);
+ CleanupConnexionHandlers();
+ ghost_system = NULL;
+ ndof_manager = NULL;
+ }
}
-
-bool GHOST_NDOFManagerCocoa::available()
-{
- // extern OSErr InstallConnexionHandlers() __attribute__((weak_import));
- // ^^ not needed since the entire framework is weak-linked
- return InstallConnexionHandlers != NULL;
- // this means that the driver is installed and dynamically linked to blender
+extern "C" {
+ bool GHOST_NDOFManagerCocoa::available()
+ {
+ extern OSErr InstallConnexionHandlers() __attribute__((weak_import));
+ // Make the linker happy for the framework check (see link below for more info)
+ // http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html
+ return InstallConnexionHandlers != NULL;
+ // this means that the driver is installed and dynamically linked to blender
+ }
}
-
#endif // WITH_INPUT_NDOF
diff --git a/intern/ghost/intern/GHOST_SystemSDL.cpp b/intern/ghost/intern/GHOST_SystemSDL.cpp
index aebb94d5cdf..f2cc45731fa 100644
--- a/intern/ghost/intern/GHOST_SystemSDL.cpp
+++ b/intern/ghost/intern/GHOST_SystemSDL.cpp
@@ -385,8 +385,26 @@ GHOST_SystemSDL::processEvent(SDL_Event *sdl_event)
GHOST_TKey gkey= convertSDLKey(sdl_sub_evt.keysym.scancode);
/* note, the sdl_sub_evt.keysym.sym is truncated, for unicode support ghost has to be modified */
+ /* printf("%d\n", sym); */
if(sym > 127) {
- sym= 0;
+ switch(sym) {
+ case SDLK_KP_DIVIDE: sym= '/'; break;
+ case SDLK_KP_MULTIPLY: sym= '*'; break;
+ case SDLK_KP_MINUS: sym= '-'; break;
+ case SDLK_KP_PLUS: sym= '+'; break;
+ case SDLK_KP_1: sym= '1'; break;
+ case SDLK_KP_2: sym= '2'; break;
+ case SDLK_KP_3: sym= '3'; break;
+ case SDLK_KP_4: sym= '4'; break;
+ case SDLK_KP_5: sym= '5'; break;
+ case SDLK_KP_6: sym= '6'; break;
+ case SDLK_KP_7: sym= '7'; break;
+ case SDLK_KP_8: sym= '8'; break;
+ case SDLK_KP_9: sym= '9'; break;
+ case SDLK_KP_0: sym= '0'; break;
+ case SDLK_KP_PERIOD: sym= '.'; break;
+ default: sym= 0; break;
+ }
}
else {
if(sdl_sub_evt.keysym.mod & (KMOD_LSHIFT|KMOD_RSHIFT)) {
diff --git a/intern/ghost/intern/GHOST_WindowWin32.cpp b/intern/ghost/intern/GHOST_WindowWin32.cpp
index 1ba51376ff9..0c8c0adf041 100644
--- a/intern/ghost/intern/GHOST_WindowWin32.cpp
+++ b/intern/ghost/intern/GHOST_WindowWin32.cpp
@@ -612,7 +612,6 @@ GHOST_TSuccess GHOST_WindowWin32::setState(GHOST_TWindowState state)
wp.showCmd = SW_SHOWMINIMIZED;
break;
case GHOST_kWindowStateMaximized:
- ShowWindow(m_hWnd, SW_HIDE);
wp.showCmd = SW_SHOWMAXIMIZED;
SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW);
break;
@@ -629,12 +628,12 @@ GHOST_TSuccess GHOST_WindowWin32::setState(GHOST_TWindowState state)
break;
case GHOST_kWindowStateNormal:
default:
- ShowWindow(m_hWnd, SW_HIDE);
wp.showCmd = SW_SHOWNORMAL;
SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW);
break;
}
- return ::SetWindowPlacement(m_hWnd, &wp) == TRUE ? GHOST_kSuccess : GHOST_kFailure;
+ SetWindowPos(m_hWnd, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); /*Clears window cache for SetWindowLongPtr */
+ return ::SetWindowPlacement(m_hWnd, &wp) == TRUE ? GHOST_kSuccess : GHOST_kFailure;
}
diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py
index a43b42e49a1..5c371fd750a 100644
--- a/release/scripts/modules/bpy/__init__.py
+++ b/release/scripts/modules/bpy/__init__.py
@@ -44,14 +44,18 @@ from . import utils, path, ops
ops = ops.ops_fake_module
-def _main():
- import sys as _sys
+def main():
+ import sys
# Possibly temp. addons path
from os.path import join, dirname, normpath
- _sys.path.append(normpath(join(dirname(__file__),
+ sys.path.append(normpath(join(dirname(__file__),
"..", "..", "addons", "modules")))
+ # fake module to allow:
+ # from bpy.types import Panel
+ sys.modules["bpy.types"] = types
+
# if "-d" in sys.argv: # Enable this to measure startup speed
if 0:
import cProfile
@@ -65,6 +69,6 @@ def _main():
utils.load_scripts()
-_main()
+main()
-del _main
+del main
diff --git a/release/scripts/modules/bpy_extras/io_utils.py b/release/scripts/modules/bpy_extras/io_utils.py
index bb4e95c051f..6271c1f77b5 100644
--- a/release/scripts/modules/bpy_extras/io_utils.py
+++ b/release/scripts/modules/bpy_extras/io_utils.py
@@ -439,7 +439,7 @@ def path_reference_copy(copy_set, report=print):
shutil.copy(file_src, file_dst)
-def unique_name(key, name, name_dict, name_max=-1, clean_func=None):
+def unique_name(key, name, name_dict, name_max=-1, clean_func=None, sep="."):
"""
Helper function for storing unique names which may have special characters
stripped and restricted to a maximum length.
@@ -456,6 +456,9 @@ def unique_name(key, name, name_dict, name_max=-1, clean_func=None):
:type name_dict: dict
:arg clean_func: Function to call on *name* before creating a unique value.
:type clean_func: function
+ :arg sep: Separator to use when between the name and a number when a
+ duplicate name is found.
+ :type sep: string
"""
name_new = name_dict.get(key)
if name_new is None:
@@ -466,14 +469,15 @@ def unique_name(key, name, name_dict, name_max=-1, clean_func=None):
if name_max == -1:
while name_new in name_dict_values:
- name_new = "%s.%03d" % (name_new_orig, count)
+ name_new = "%s%s%03d" % (name_new_orig, sep, count)
count += 1
else:
name_new = name_new[:name_max]
while name_new in name_dict_values:
count_str = "%03d" % count
- name_new = "%.*s.%s" % (name_max - (len(count_str) + 1),
+ name_new = "%.*s%s%s" % (name_max - (len(count_str) + 1),
name_new_orig,
+ sep,
count_str,
)
count += 1
diff --git a/release/scripts/startup/bl_operators/add_mesh_torus.py b/release/scripts/startup/bl_operators/add_mesh_torus.py
index 27a6d21d519..1c4518c4feb 100644
--- a/release/scripts/startup/bl_operators/add_mesh_torus.py
+++ b/release/scripts/startup/bl_operators/add_mesh_torus.py
@@ -18,6 +18,7 @@
# <pep8-80 compliant>
import bpy
+from bpy.types import Operator
import mathutils
@@ -81,7 +82,7 @@ from bpy.props import (FloatProperty,
)
-class AddTorus(bpy.types.Operator):
+class AddTorus(Operator):
'''Add a torus mesh'''
bl_idname = "mesh.primitive_torus_add"
bl_label = "Add Torus"
diff --git a/release/scripts/startup/bl_operators/animsys_update.py b/release/scripts/startup/bl_operators/animsys_update.py
index 63d438a5066..3710c57ac16 100644
--- a/release/scripts/startup/bl_operators/animsys_update.py
+++ b/release/scripts/startup/bl_operators/animsys_update.py
@@ -686,9 +686,10 @@ data_path_update = [
import bpy
+from bpy.types import Operator
-class UpdateAnimData(bpy.types.Operator):
+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"
diff --git a/release/scripts/startup/bl_operators/image.py b/release/scripts/startup/bl_operators/image.py
index aca9b581b97..9226cbed51b 100644
--- a/release/scripts/startup/bl_operators/image.py
+++ b/release/scripts/startup/bl_operators/image.py
@@ -19,10 +19,11 @@
# <pep8-80 compliant>
import bpy
+from bpy.types import Operator
from bpy.props import StringProperty
-class EditExternally(bpy.types.Operator):
+class EditExternally(Operator):
'''Edit image in an external application'''
bl_idname = "image.external_edit"
bl_label = "Image Edit Externally"
@@ -106,7 +107,7 @@ class EditExternally(bpy.types.Operator):
return {'FINISHED'}
-class SaveDirty(bpy.types.Operator):
+class SaveDirty(Operator):
"""Save all modified textures"""
bl_idname = "image.save_dirty"
bl_label = "Save Dirty"
@@ -129,7 +130,7 @@ class SaveDirty(bpy.types.Operator):
return {'FINISHED'}
-class ProjectEdit(bpy.types.Operator):
+class ProjectEdit(Operator):
"""Edit a snapshot of the viewport in an external image editor"""
bl_idname = "image.project_edit"
bl_label = "Project Edit"
@@ -196,7 +197,7 @@ class ProjectEdit(bpy.types.Operator):
return {'FINISHED'}
-class ProjectApply(bpy.types.Operator):
+class ProjectApply(Operator):
"""Project edited image back onto the object"""
bl_idname = "image.project_apply"
bl_label = "Project Apply"
diff --git a/release/scripts/startup/bl_operators/mesh.py b/release/scripts/startup/bl_operators/mesh.py
index 344b238709f..4114381f3dc 100644
--- a/release/scripts/startup/bl_operators/mesh.py
+++ b/release/scripts/startup/bl_operators/mesh.py
@@ -19,11 +19,12 @@
# <pep8-80 compliant>
import bpy
+from bpy.types import Operator
from bpy.props import EnumProperty
-class MeshSelectInteriorFaces(bpy.types.Operator):
+class MeshSelectInteriorFaces(Operator):
'''Select faces where all edges have more then 2 face users.'''
bl_idname = "mesh.faces_select_interior"
@@ -67,7 +68,7 @@ class MeshSelectInteriorFaces(bpy.types.Operator):
return {'FINISHED'}
-class MeshMirrorUV(bpy.types.Operator):
+class MeshMirrorUV(Operator):
'''Copy mirror UV coordinates on the X axis based on a mirrored mesh'''
bl_idname = "mesh.faces_mirror_uv"
bl_label = "Copy Mirrored UV coords"
diff --git a/release/scripts/startup/bl_operators/nla.py b/release/scripts/startup/bl_operators/nla.py
index e0b5a11dc78..4b4630fdd4e 100644
--- a/release/scripts/startup/bl_operators/nla.py
+++ b/release/scripts/startup/bl_operators/nla.py
@@ -19,6 +19,7 @@
# <pep8-80 compliant>
import bpy
+from bpy.types import Operator
def pose_frame_info(obj):
@@ -192,7 +193,7 @@ def bake(frame_start,
from bpy.props import IntProperty, BoolProperty, EnumProperty
-class BakeAction(bpy.types.Operator):
+class BakeAction(Operator):
'''Bake animation to an Action'''
bl_idname = "nla.bake"
bl_label = "Bake Action"
diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py
index 25bb37d1e67..413f0e8db9e 100644
--- a/release/scripts/startup/bl_operators/object.py
+++ b/release/scripts/startup/bl_operators/object.py
@@ -19,10 +19,11 @@
# <pep8-80 compliant>
import bpy
+from bpy.types import Operator
from bpy.props import StringProperty, BoolProperty, EnumProperty, IntProperty
-class SelectPattern(bpy.types.Operator):
+class SelectPattern(Operator):
'''Select object matching a naming pattern'''
bl_idname = "object.select_pattern"
bl_label = "Select Pattern"
@@ -99,7 +100,7 @@ class SelectPattern(bpy.types.Operator):
row.prop(self, "extend")
-class SelectCamera(bpy.types.Operator):
+class SelectCamera(Operator):
'''Select object matching a naming pattern'''
bl_idname = "object.select_camera"
bl_label = "Select Camera"
@@ -120,7 +121,7 @@ class SelectCamera(bpy.types.Operator):
return {'FINISHED'}
-class SelectHierarchy(bpy.types.Operator):
+class SelectHierarchy(Operator):
'''Select object relative to the active objects position''' \
'''in the hierarchy'''
bl_idname = "object.select_hierarchy"
@@ -187,7 +188,7 @@ class SelectHierarchy(bpy.types.Operator):
return {'CANCELLED'}
-class SubdivisionSet(bpy.types.Operator):
+class SubdivisionSet(Operator):
'''Sets a Subdivision Surface Level (1-5)'''
bl_idname = "object.subdivision_set"
@@ -263,7 +264,7 @@ class SubdivisionSet(bpy.types.Operator):
return {'FINISHED'}
-class ShapeTransfer(bpy.types.Operator):
+class ShapeTransfer(Operator):
'''Copy another selected objects active shape to this one by ''' \
'''applying the relative offsets'''
@@ -507,7 +508,7 @@ class ShapeTransfer(bpy.types.Operator):
return self._main(ob_act, objects, self.mode, self.use_clamp)
-class JoinUVs(bpy.types.Operator):
+class JoinUVs(Operator):
'''Copy UV Layout to objects with matching geometry'''
bl_idname = "object.join_uvs"
bl_label = "Join as UVs"
@@ -575,7 +576,7 @@ class JoinUVs(bpy.types.Operator):
return {'FINISHED'}
-class MakeDupliFace(bpy.types.Operator):
+class MakeDupliFace(Operator):
'''Make linked objects into dupli-faces'''
bl_idname = "object.make_dupli_face"
bl_label = "Make Dupli-Face"
@@ -649,7 +650,7 @@ class MakeDupliFace(bpy.types.Operator):
return {'FINISHED'}
-class IsolateTypeRender(bpy.types.Operator):
+class IsolateTypeRender(Operator):
'''Hide unselected render objects of same type as active ''' \
'''by setting the hide render flag'''
bl_idname = "object.isolate_type_render"
@@ -670,7 +671,7 @@ class IsolateTypeRender(bpy.types.Operator):
return {'FINISHED'}
-class ClearAllRestrictRender(bpy.types.Operator):
+class ClearAllRestrictRender(Operator):
'''Reveal all render objects by setting the hide render flag'''
bl_idname = "object.hide_render_clear_all"
bl_label = "Clear All Restrict Render"
diff --git a/release/scripts/startup/bl_operators/object_align.py b/release/scripts/startup/bl_operators/object_align.py
index 7fd769c40c9..d4a3d826f2f 100644
--- a/release/scripts/startup/bl_operators/object_align.py
+++ b/release/scripts/startup/bl_operators/object_align.py
@@ -19,6 +19,7 @@
# <pep8-80 compliant>
import bpy
+from bpy.types import Operator
from mathutils import Vector
@@ -339,7 +340,7 @@ def align_objects(align_x,
from bpy.props import EnumProperty, BoolProperty
-class AlignObjects(bpy.types.Operator):
+class AlignObjects(Operator):
'''Align Objects'''
bl_idname = "object.align"
bl_label = "Align Objects"
diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py
index ef10bfd737d..cd206da3a8e 100644
--- a/release/scripts/startup/bl_operators/object_quick_effects.py
+++ b/release/scripts/startup/bl_operators/object_quick_effects.py
@@ -20,6 +20,7 @@
from mathutils import Vector
import bpy
+from bpy.types import Operator
from bpy.props import (BoolProperty,
EnumProperty,
IntProperty,
@@ -45,7 +46,7 @@ def object_ensure_material(obj, mat_name):
return mat
-class QuickFur(bpy.types.Operator):
+class QuickFur(Operator):
bl_idname = "object.quick_fur"
bl_label = "Quick Fur"
bl_options = {'REGISTER', 'UNDO'}
@@ -104,7 +105,7 @@ class QuickFur(bpy.types.Operator):
return {'FINISHED'}
-class QuickExplode(bpy.types.Operator):
+class QuickExplode(Operator):
bl_idname = "object.quick_explode"
bl_label = "Quick Explode"
bl_options = {'REGISTER', 'UNDO'}
@@ -265,7 +266,7 @@ def obj_bb_minmax(obj, min_co, max_co):
max_co[2] = max(bb_vec[2], max_co[2])
-class QuickSmoke(bpy.types.Operator):
+class QuickSmoke(Operator):
bl_idname = "object.quick_smoke"
bl_label = "Quick Smoke"
bl_options = {'REGISTER', 'UNDO'}
@@ -383,7 +384,7 @@ class QuickSmoke(bpy.types.Operator):
return {'FINISHED'}
-class QuickFluid(bpy.types.Operator):
+class QuickFluid(Operator):
bl_idname = "object.quick_fluid"
bl_label = "Quick Fluid"
bl_options = {'REGISTER', 'UNDO'}
diff --git a/release/scripts/startup/bl_operators/object_randomize_transform.py b/release/scripts/startup/bl_operators/object_randomize_transform.py
index b94c4f06cd3..f65e3d27d83 100644
--- a/release/scripts/startup/bl_operators/object_randomize_transform.py
+++ b/release/scripts/startup/bl_operators/object_randomize_transform.py
@@ -19,6 +19,7 @@
# <pep8-80 compliant>
import bpy
+from bpy.types import Operator
def randomize_selected(seed, delta, loc, rot, scale, scale_even):
@@ -87,7 +88,7 @@ def randomize_selected(seed, delta, loc, rot, scale, scale_even):
from bpy.props import IntProperty, BoolProperty, FloatVectorProperty
-class RandomizeLocRotSize(bpy.types.Operator):
+class RandomizeLocRotSize(Operator):
'''Randomize objects loc/rot/scale'''
bl_idname = "object.randomize_transform"
bl_label = "Randomize Transform"
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index fbcc327c3bd..2fd0c4a9e12 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -19,6 +19,7 @@
# <pep8-80 compliant>
import bpy
+from bpy.types import Menu, Operator
class AddPresetBase():
@@ -140,7 +141,7 @@ class AddPresetBase():
return self.execute(context)
-class ExecutePreset(bpy.types.Operator):
+class ExecutePreset(Operator):
''' Executes a preset '''
bl_idname = "script.execute_preset"
bl_label = "Execute a Python Preset"
@@ -168,7 +169,7 @@ class ExecutePreset(bpy.types.Operator):
return {'FINISHED'}
-class AddPresetRender(AddPresetBase, bpy.types.Operator):
+class AddPresetRender(AddPresetBase, Operator):
'''Add a Render Preset'''
bl_idname = "render.preset_add"
bl_label = "Add Render Preset"
@@ -194,7 +195,7 @@ class AddPresetRender(AddPresetBase, bpy.types.Operator):
preset_subdir = "render"
-class AddPresetSSS(AddPresetBase, bpy.types.Operator):
+class AddPresetSSS(AddPresetBase, Operator):
'''Add a Subsurface Scattering Preset'''
bl_idname = "material.sss_preset_add"
bl_label = "Add SSS Preset"
@@ -222,7 +223,7 @@ class AddPresetSSS(AddPresetBase, bpy.types.Operator):
preset_subdir = "sss"
-class AddPresetCloth(AddPresetBase, bpy.types.Operator):
+class AddPresetCloth(AddPresetBase, Operator):
'''Add a Cloth Preset'''
bl_idname = "cloth.preset_add"
bl_label = "Add Cloth Preset"
@@ -244,7 +245,7 @@ class AddPresetCloth(AddPresetBase, bpy.types.Operator):
preset_subdir = "cloth"
-class AddPresetSunSky(AddPresetBase, bpy.types.Operator):
+class AddPresetSunSky(AddPresetBase, Operator):
'''Add a Sky & Atmosphere Preset'''
bl_idname = "lamp.sunsky_preset_add"
bl_label = "Add Sunsky Preset"
@@ -273,7 +274,7 @@ class AddPresetSunSky(AddPresetBase, bpy.types.Operator):
preset_subdir = "sunsky"
-class AddPresetInteraction(AddPresetBase, bpy.types.Operator):
+class AddPresetInteraction(AddPresetBase, Operator):
'''Add an Application Interaction Preset'''
bl_idname = "wm.interaction_preset_add"
bl_label = "Add Interaction Preset"
@@ -299,7 +300,7 @@ class AddPresetInteraction(AddPresetBase, bpy.types.Operator):
preset_subdir = "interaction"
-class AddPresetKeyconfig(AddPresetBase, bpy.types.Operator):
+class AddPresetKeyconfig(AddPresetBase, Operator):
'''Add a Keyconfig Preset'''
bl_idname = "wm.keyconfig_preset_add"
bl_label = "Add Keyconfig Preset"
@@ -322,7 +323,7 @@ class AddPresetKeyconfig(AddPresetBase, bpy.types.Operator):
keyconfigs.remove(keyconfigs.active)
-class AddPresetOperator(AddPresetBase, bpy.types.Operator):
+class AddPresetOperator(AddPresetBase, Operator):
'''Add an Application Interaction Preset'''
bl_idname = "wm.operator_preset_add"
bl_label = "Operator Preset"
@@ -345,7 +346,7 @@ class AddPresetOperator(AddPresetBase, bpy.types.Operator):
@property
def preset_values(self):
- properties_blacklist = bpy.types.Operator.bl_rna.properties.keys()
+ properties_blacklist = Operator.bl_rna.properties.keys()
prefix, suffix = self.operator.split("_OT_", 1)
op = getattr(getattr(bpy.ops, prefix.lower()), suffix)
@@ -367,12 +368,12 @@ class AddPresetOperator(AddPresetBase, bpy.types.Operator):
return os.path.join("operator", "%s.%s" % (prefix.lower(), suffix))
-class WM_MT_operator_presets(bpy.types.Menu):
+class WM_MT_operator_presets(Menu):
bl_label = "Operator Presets"
def draw(self, context):
self.operator = context.space_data.operator.bl_idname
- bpy.types.Menu.draw_preset(self, context)
+ Menu.draw_preset(self, context)
@property
def preset_subdir(self):
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 a38d817d738..c2a09d6a4ae 100644
--- a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py
+++ b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py
@@ -21,6 +21,7 @@
# Originally written by Matt Ebb
import bpy
+from bpy.types import Operator
import os
@@ -64,7 +65,7 @@ def guess_player_path(preset):
return player_path
-class PlayRenderedAnim(bpy.types.Operator):
+class PlayRenderedAnim(Operator):
'''Plays back rendered frames/movies using an external player.'''
bl_idname = "render.play_rendered_anim"
bl_label = "Play Rendered Animation"
diff --git a/release/scripts/startup/bl_operators/sequencer.py b/release/scripts/startup/bl_operators/sequencer.py
index 16b72406c49..d2f85c8d7c7 100644
--- a/release/scripts/startup/bl_operators/sequencer.py
+++ b/release/scripts/startup/bl_operators/sequencer.py
@@ -19,11 +19,12 @@
# <pep8 compliant>
import bpy
+from bpy.types import Operator
from bpy.props import IntProperty
-class SequencerCrossfadeSounds(bpy.types.Operator):
+class SequencerCrossfadeSounds(Operator):
'''Do crossfading volume animation of two selected sound strips.'''
bl_idname = "sequencer.crossfade_sounds"
@@ -74,7 +75,7 @@ class SequencerCrossfadeSounds(bpy.types.Operator):
return {'CANCELLED'}
-class SequencerCutMulticam(bpy.types.Operator):
+class SequencerCutMulticam(Operator):
'''Cut multicam strip and select camera.'''
bl_idname = "sequencer.cut_multicam"
@@ -112,7 +113,7 @@ class SequencerCutMulticam(bpy.types.Operator):
return {'FINISHED'}
-class SequencerDeinterlaceSelectedMovies(bpy.types.Operator):
+class SequencerDeinterlaceSelectedMovies(Operator):
'''Deinterlace all selected movie sources.'''
bl_idname = "sequencer.deinterlace_selected_movies"
diff --git a/release/scripts/startup/bl_operators/uvcalc_follow_active.py b/release/scripts/startup/bl_operators/uvcalc_follow_active.py
index 43ca9af59ba..6c258d094e8 100644
--- a/release/scripts/startup/bl_operators/uvcalc_follow_active.py
+++ b/release/scripts/startup/bl_operators/uvcalc_follow_active.py
@@ -22,6 +22,7 @@
# http://mediawiki.blender.org/index.php/Scripts/Manual/UV_Calculate/Follow_active_quads
import bpy
+from bpy.types import Operator
def extend(obj, operator, EXTEND_MODE):
@@ -226,7 +227,7 @@ def main(context, operator):
extend(obj, operator, operator.properties.mode)
-class FollowActiveQuads(bpy.types.Operator):
+class FollowActiveQuads(Operator):
'''Follow UVs from active quads along continuous face loops'''
bl_idname = "uv.follow_active_quads"
bl_label = "Follow Active Quads"
diff --git a/release/scripts/startup/bl_operators/uvcalc_lightmap.py b/release/scripts/startup/bl_operators/uvcalc_lightmap.py
index d2371b0316a..6b1c6e1be98 100644
--- a/release/scripts/startup/bl_operators/uvcalc_lightmap.py
+++ b/release/scripts/startup/bl_operators/uvcalc_lightmap.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Operator
import mathutils
@@ -543,7 +544,7 @@ def unwrap(operator, context, **kwargs):
from bpy.props import BoolProperty, FloatProperty, IntProperty
-class LightMapPack(bpy.types.Operator):
+class LightMapPack(Operator):
'''Follow UVs from active quads along continuous face loops'''
bl_idname = "uv.lightmap_pack"
bl_label = "Lightmap Pack"
diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
index 851f33bde11..8afd6c104e0 100644
--- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py
+++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
@@ -20,6 +20,7 @@
from mathutils import Matrix, Vector, geometry
import bpy
+from bpy.types import Operator
DEG_TO_RAD = 0.017453292519943295 # pi/180.0
SMALL_NUM = 0.000000001
@@ -812,39 +813,26 @@ def main(context,
global RotMatStepRotation
main_consts()
- # TODO, all selected meshes
- '''
- # objects = context.selected_editable_objects
- objects = []
-
- # we can will tag them later.
- obList = [ob for ob in objects if ob.type == 'MESH']
-
- # Face select object may not be selected.
- ob = context.active_object
-
- if ob and (not ob.select) and ob.type == 'MESH':
- # Add to the list
- obList =[ob]
- del objects
- '''
+ # Create the variables.
+ USER_PROJECTION_LIMIT = projection_limit
+ USER_ONLY_SELECTED_FACES = True
+ USER_SHARE_SPACE = 1 # Only for hole filling.
+ USER_STRETCH_ASPECT = 1 # Only for hole filling.
+ USER_ISLAND_MARGIN = island_margin # Only for hole filling.
+ USER_FILL_HOLES = 0
+ USER_FILL_HOLES_QUALITY = 50 # Only for hole filling.
+ USER_VIEW_INIT = 0 # Only for hole filling.
- # quick workaround
- obList = [ob for ob in [context.active_object] if ob and ob.type == 'MESH']
+ is_editmode = (context.active_object.mode == 'EDIT')
+ if is_editmode:
+ obList = [ob for ob in [context.active_object] if ob and ob.type == 'MESH']
+ else:
+ obList = [ob for ob in context.selected_editable_objects if ob and ob.type == 'MESH']
+ USER_ONLY_SELECTED_FACES = False
if not obList:
raise('error, no selected mesh objects')
- # Create the variables.
- USER_PROJECTION_LIMIT = projection_limit
- USER_ONLY_SELECTED_FACES = (1)
- USER_SHARE_SPACE = (1) # Only for hole filling.
- USER_STRETCH_ASPECT = (1) # Only for hole filling.
- USER_ISLAND_MARGIN = island_margin # Only for hole filling.
- USER_FILL_HOLES = (0)
- USER_FILL_HOLES_QUALITY = (50) # Only for hole filling.
- USER_VIEW_INIT = (0) # Only for hole filling.
-
# Reuse variable
if len(obList) == 1:
ob = "Unwrap %i Selected Mesh"
@@ -905,8 +893,8 @@ def main(context,
if USER_ONLY_SELECTED_FACES:
meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces) if f.select]
- #else:
- # meshFaces = map(thickface, me.faces)
+ else:
+ meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces)]
if not meshFaces:
continue
@@ -921,7 +909,7 @@ def main(context,
# meshFaces = []
# meshFaces.sort( lambda a, b: cmp(b.area , a.area) ) # Biggest first.
- meshFaces.sort( key = lambda a: -a.area )
+ meshFaces.sort(key=lambda a: -a.area)
# remove all zero area faces
while meshFaces and meshFaces[-1].area <= SMALL_NUM:
@@ -1116,7 +1104,7 @@ def main(context,
from bpy.props import FloatProperty
-class SmartProject(bpy.types.Operator):
+class SmartProject(Operator):
'''This script projection unwraps the selected faces of a mesh. it operates on all selected mesh objects, and can be used unwrap selected faces, or all faces.'''
bl_idname = "uv.smart_project"
bl_label = "Smart UV Project"
diff --git a/release/scripts/startup/bl_operators/vertexpaint_dirt.py b/release/scripts/startup/bl_operators/vertexpaint_dirt.py
index 672db71e361..facde82f812 100644
--- a/release/scripts/startup/bl_operators/vertexpaint_dirt.py
+++ b/release/scripts/startup/bl_operators/vertexpaint_dirt.py
@@ -142,10 +142,11 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
import bpy
+from bpy.types import Operator
from bpy.props import FloatProperty, IntProperty, BoolProperty
-class VertexPaintDirt(bpy.types.Operator):
+class VertexPaintDirt(Operator):
bl_idname = "paint.vertex_color_dirt"
bl_label = "Dirty Vertex Colors"
bl_options = {'REGISTER', 'UNDO'}
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index f9327aa6c40..fe75c54e60e 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -19,13 +19,14 @@
# <pep8 compliant>
import bpy
+from bpy.types import Menu, Operator
from bpy.props import StringProperty, BoolProperty, IntProperty, \
FloatProperty, EnumProperty
from rna_prop_ui import rna_idprop_ui_prop_get, rna_idprop_ui_prop_clear
-class MESH_OT_delete_edgeloop(bpy.types.Operator):
+class MESH_OT_delete_edgeloop(Operator):
'''Delete an edge loop by merging the faces on each side to a single face loop'''
bl_idname = "mesh.delete_edgeloop"
bl_label = "Delete Edge Loop"
@@ -76,7 +77,7 @@ def execute_context_assign(self, context):
return {'FINISHED'}
-class BRUSH_OT_active_index_set(bpy.types.Operator):
+class BRUSH_OT_active_index_set(Operator):
'''Set active sculpt/paint brush from it's number'''
bl_idname = "brush.active_index_set"
bl_label = "Set Brush Number"
@@ -104,7 +105,7 @@ class BRUSH_OT_active_index_set(bpy.types.Operator):
return {'CANCELLED'}
-class WM_OT_context_set_boolean(bpy.types.Operator):
+class WM_OT_context_set_boolean(Operator):
'''Set a context value.'''
bl_idname = "wm.context_set_boolean"
bl_label = "Context Set Boolean"
@@ -117,7 +118,7 @@ class WM_OT_context_set_boolean(bpy.types.Operator):
execute = execute_context_assign
-class WM_OT_context_set_int(bpy.types.Operator): # same as enum
+class WM_OT_context_set_int(Operator): # same as enum
'''Set a context value.'''
bl_idname = "wm.context_set_int"
bl_label = "Context Set"
@@ -130,7 +131,7 @@ class WM_OT_context_set_int(bpy.types.Operator): # same as enum
execute = execute_context_assign
-class WM_OT_context_scale_int(bpy.types.Operator):
+class WM_OT_context_scale_int(Operator):
'''Scale an int context value.'''
bl_idname = "wm.context_scale_int"
bl_label = "Context Set"
@@ -166,7 +167,7 @@ class WM_OT_context_scale_int(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_context_set_float(bpy.types.Operator): # same as enum
+class WM_OT_context_set_float(Operator): # same as enum
'''Set a context value.'''
bl_idname = "wm.context_set_float"
bl_label = "Context Set Float"
@@ -180,7 +181,7 @@ class WM_OT_context_set_float(bpy.types.Operator): # same as enum
execute = execute_context_assign
-class WM_OT_context_set_string(bpy.types.Operator): # same as enum
+class WM_OT_context_set_string(Operator): # same as enum
'''Set a context value.'''
bl_idname = "wm.context_set_string"
bl_label = "Context Set String"
@@ -193,7 +194,7 @@ class WM_OT_context_set_string(bpy.types.Operator): # same as enum
execute = execute_context_assign
-class WM_OT_context_set_enum(bpy.types.Operator):
+class WM_OT_context_set_enum(Operator):
'''Set a context value.'''
bl_idname = "wm.context_set_enum"
bl_label = "Context Set Enum"
@@ -207,7 +208,7 @@ class WM_OT_context_set_enum(bpy.types.Operator):
execute = execute_context_assign
-class WM_OT_context_set_value(bpy.types.Operator):
+class WM_OT_context_set_value(Operator):
'''Set a context value.'''
bl_idname = "wm.context_set_value"
bl_label = "Context Set Value"
@@ -225,7 +226,7 @@ class WM_OT_context_set_value(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_context_toggle(bpy.types.Operator):
+class WM_OT_context_toggle(Operator):
'''Toggle a context value.'''
bl_idname = "wm.context_toggle"
bl_label = "Context Toggle"
@@ -244,7 +245,7 @@ class WM_OT_context_toggle(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_context_toggle_enum(bpy.types.Operator):
+class WM_OT_context_toggle_enum(Operator):
'''Toggle a context value.'''
bl_idname = "wm.context_toggle_enum"
bl_label = "Context Toggle Values"
@@ -270,7 +271,7 @@ class WM_OT_context_toggle_enum(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_context_cycle_int(bpy.types.Operator):
+class WM_OT_context_cycle_int(Operator):
'''Set a context value. Useful for cycling active material, '''
'''vertex keys, groups' etc.'''
bl_idname = "wm.context_cycle_int"
@@ -305,7 +306,7 @@ class WM_OT_context_cycle_int(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_context_cycle_enum(bpy.types.Operator):
+class WM_OT_context_cycle_enum(Operator):
'''Toggle a context value.'''
bl_idname = "wm.context_cycle_enum"
bl_label = "Context Enum Cycle"
@@ -357,7 +358,7 @@ class WM_OT_context_cycle_enum(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_context_cycle_array(bpy.types.Operator):
+class WM_OT_context_cycle_array(Operator):
'''Set a context array value.
Useful for cycling the active mesh edit mode.'''
bl_idname = "wm.context_cycle_array"
@@ -385,7 +386,7 @@ class WM_OT_context_cycle_array(bpy.types.Operator):
return {'FINISHED'}
-class WM_MT_context_menu_enum(bpy.types.Menu):
+class WM_MT_context_menu_enum(Menu):
bl_label = ""
data_path = "" # BAD DESIGN, set from operator below.
@@ -405,7 +406,7 @@ class WM_MT_context_menu_enum(bpy.types.Menu):
prop.value = identifier
-class WM_OT_context_menu_enum(bpy.types.Operator):
+class WM_OT_context_menu_enum(Operator):
bl_idname = "wm.context_menu_enum"
bl_label = "Context Enum Menu"
bl_options = {'UNDO', 'INTERNAL'}
@@ -418,7 +419,7 @@ class WM_OT_context_menu_enum(bpy.types.Operator):
return {'PASS_THROUGH'}
-class WM_OT_context_set_id(bpy.types.Operator):
+class WM_OT_context_set_id(Operator):
'''Toggle a context value.'''
bl_idname = "wm.context_set_id"
bl_label = "Set Library ID"
@@ -466,7 +467,7 @@ data_path_item = StringProperty(
description="The data path from each iterable to the value (int or float)")
-class WM_OT_context_collection_boolean_set(bpy.types.Operator):
+class WM_OT_context_collection_boolean_set(Operator):
'''Set boolean values for a collection of items'''
bl_idname = "wm.context_collection_boolean_set"
bl_label = "Context Collection Boolean Set"
@@ -520,7 +521,7 @@ class WM_OT_context_collection_boolean_set(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_context_modal_mouse(bpy.types.Operator):
+class WM_OT_context_modal_mouse(Operator):
'''Adjust arbitrary values with mouse input'''
bl_idname = "wm.context_modal_mouse"
bl_label = "Context Modal Mouse"
@@ -607,7 +608,7 @@ class WM_OT_context_modal_mouse(bpy.types.Operator):
return {'RUNNING_MODAL'}
-class WM_OT_url_open(bpy.types.Operator):
+class WM_OT_url_open(Operator):
"Open a website in the Webbrowser"
bl_idname = "wm.url_open"
bl_label = ""
@@ -621,7 +622,7 @@ class WM_OT_url_open(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_path_open(bpy.types.Operator):
+class WM_OT_path_open(Operator):
"Open a path in a file browser"
bl_idname = "wm.path_open"
bl_label = ""
@@ -654,7 +655,7 @@ class WM_OT_path_open(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_doc_view(bpy.types.Operator):
+class WM_OT_doc_view(Operator):
'''Load online reference docs'''
bl_idname = "wm.doc_view"
bl_label = "View Documentation"
@@ -708,7 +709,7 @@ class WM_OT_doc_view(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_doc_edit(bpy.types.Operator):
+class WM_OT_doc_edit(Operator):
'''Load online reference docs'''
bl_idname = "wm.doc_edit"
bl_label = "Edit Documentation"
@@ -792,7 +793,7 @@ rna_min = FloatProperty(name="Min", default=0.0, precision=3)
rna_max = FloatProperty(name="Max", default=1.0, precision=3)
-class WM_OT_properties_edit(bpy.types.Operator):
+class WM_OT_properties_edit(Operator):
'''Internal use (edit a property data_path)'''
bl_idname = "wm.properties_edit"
bl_label = "Edit Property"
@@ -876,7 +877,7 @@ class WM_OT_properties_edit(bpy.types.Operator):
return wm.invoke_props_dialog(self)
-class WM_OT_properties_add(bpy.types.Operator):
+class WM_OT_properties_add(Operator):
'''Internal use (edit a property data_path)'''
bl_idname = "wm.properties_add"
bl_label = "Add Property"
@@ -902,7 +903,7 @@ class WM_OT_properties_add(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_properties_context_change(bpy.types.Operator):
+class WM_OT_properties_context_change(Operator):
"Change the context tab in a Properties Window"
bl_idname = "wm.properties_context_change"
bl_label = ""
@@ -914,7 +915,7 @@ class WM_OT_properties_context_change(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_properties_remove(bpy.types.Operator):
+class WM_OT_properties_remove(Operator):
'''Internal use (edit a property data_path)'''
bl_idname = "wm.properties_remove"
bl_label = "Remove Property"
@@ -928,7 +929,7 @@ class WM_OT_properties_remove(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_keyconfig_activate(bpy.types.Operator):
+class WM_OT_keyconfig_activate(Operator):
bl_idname = "wm.keyconfig_activate"
bl_label = "Activate Keyconfig"
@@ -939,7 +940,7 @@ class WM_OT_keyconfig_activate(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_appconfig_default(bpy.types.Operator):
+class WM_OT_appconfig_default(Operator):
bl_idname = "wm.appconfig_default"
bl_label = "Default Application Configuration"
@@ -956,7 +957,7 @@ class WM_OT_appconfig_default(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_appconfig_activate(bpy.types.Operator):
+class WM_OT_appconfig_activate(Operator):
bl_idname = "wm.appconfig_activate"
bl_label = "Activate Application Configuration"
@@ -974,7 +975,7 @@ class WM_OT_appconfig_activate(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_sysinfo(bpy.types.Operator):
+class WM_OT_sysinfo(Operator):
'''Generate System Info'''
bl_idname = "wm.sysinfo"
bl_label = "System Info"
@@ -985,7 +986,7 @@ class WM_OT_sysinfo(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_copy_prev_settings(bpy.types.Operator):
+class WM_OT_copy_prev_settings(Operator):
'''Copy settings from previous version'''
bl_idname = "wm.copy_prev_settings"
bl_label = "Copy Previous Settings"
diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py
index 00ccd4ce08b..cddf9fef0f2 100644
--- a/release/scripts/startup/bl_ui/properties_data_armature.py
+++ b/release/scripts/startup/bl_ui/properties_data_armature.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from rna_prop_ui import PropertyPanel
@@ -31,7 +32,7 @@ class ArmatureButtonsPanel():
return context.armature
-class DATA_PT_context_arm(ArmatureButtonsPanel, bpy.types.Panel):
+class DATA_PT_context_arm(ArmatureButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
@@ -48,7 +49,7 @@ class DATA_PT_context_arm(ArmatureButtonsPanel, bpy.types.Panel):
layout.template_ID(space, "pin_id")
-class DATA_PT_skeleton(ArmatureButtonsPanel, bpy.types.Panel):
+class DATA_PT_skeleton(ArmatureButtonsPanel, Panel):
bl_label = "Skeleton"
def draw(self, context):
@@ -74,7 +75,7 @@ class DATA_PT_skeleton(ArmatureButtonsPanel, bpy.types.Panel):
col = layout.column()
col.prop(arm, "vert_deformer")
-class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
+class DATA_PT_display(ArmatureButtonsPanel, Panel):
bl_label = "Display"
def draw(self, context):
@@ -99,7 +100,7 @@ class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
col.prop(arm, "use_deform_delay", text="Delay Refresh")
-class DATA_PT_bone_group_specials(bpy.types.Menu):
+class DATA_PT_bone_group_specials(Menu):
bl_label = "Bone Group Specials"
def draw(self, context):
@@ -108,7 +109,7 @@ class DATA_PT_bone_group_specials(bpy.types.Menu):
layout.operator("pose.group_sort", icon='SORTALPHA')
-class DATA_PT_bone_groups(ArmatureButtonsPanel, bpy.types.Panel):
+class DATA_PT_bone_groups(ArmatureButtonsPanel, Panel):
bl_label = "Bone Groups"
@classmethod
@@ -168,7 +169,7 @@ class DATA_PT_bone_groups(ArmatureButtonsPanel, bpy.types.Panel):
sub.operator("pose.group_deselect", text="Deselect")
-class DATA_PT_pose_library(ArmatureButtonsPanel, bpy.types.Panel):
+class DATA_PT_pose_library(ArmatureButtonsPanel, Panel):
bl_label = "Pose Library"
bl_options = {'DEFAULT_CLOSED'}
@@ -207,7 +208,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, bpy.types.Panel):
# TODO: this panel will soon be depreceated too
-class DATA_PT_ghost(ArmatureButtonsPanel, bpy.types.Panel):
+class DATA_PT_ghost(ArmatureButtonsPanel, Panel):
bl_label = "Ghost"
def draw(self, context):
@@ -234,7 +235,7 @@ class DATA_PT_ghost(ArmatureButtonsPanel, bpy.types.Panel):
col.prop(arm, "show_only_ghost_selected", text="Selected Only")
-class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, bpy.types.Panel):
+class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, Panel):
bl_label = "iTaSC parameters"
bl_options = {'DEFAULT_CLOSED'}
@@ -287,7 +288,7 @@ from bl_ui.properties_animviz import (
)
-class DATA_PT_motion_paths(MotionPathButtonsPanel, bpy.types.Panel):
+class DATA_PT_motion_paths(MotionPathButtonsPanel, Panel):
#bl_label = "Bones Motion Paths"
bl_context = "data"
@@ -310,7 +311,7 @@ class DATA_PT_motion_paths(MotionPathButtonsPanel, bpy.types.Panel):
split.operator("pose.paths_clear", text="Clear Paths")
-class DATA_PT_onion_skinning(OnionSkinButtonsPanel): # , bpy.types.Panel): # inherit from panel when ready
+class DATA_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from panel when ready
#bl_label = "Bones Onion Skinning"
bl_context = "data"
@@ -324,7 +325,7 @@ class DATA_PT_onion_skinning(OnionSkinButtonsPanel): # , bpy.types.Panel): # in
self.draw_settings(context, ob.pose.animation_visualisation, bones=True)
-class DATA_PT_custom_props_arm(ArmatureButtonsPanel, PropertyPanel, bpy.types.Panel):
+class DATA_PT_custom_props_arm(ArmatureButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "object.data"
_property_type = bpy.types.Armature
diff --git a/release/scripts/startup/bl_ui/properties_data_bone.py b/release/scripts/startup/bl_ui/properties_data_bone.py
index 9fc055e9343..b3eaf88d5bf 100644
--- a/release/scripts/startup/bl_ui/properties_data_bone.py
+++ b/release/scripts/startup/bl_ui/properties_data_bone.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from rna_prop_ui import PropertyPanel
@@ -32,7 +33,7 @@ class BoneButtonsPanel():
return (context.bone or context.edit_bone)
-class BONE_PT_context_bone(BoneButtonsPanel, bpy.types.Panel):
+class BONE_PT_context_bone(BoneButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
@@ -48,7 +49,7 @@ class BONE_PT_context_bone(BoneButtonsPanel, bpy.types.Panel):
row.prop(bone, "name", text="")
-class BONE_PT_transform(BoneButtonsPanel, bpy.types.Panel):
+class BONE_PT_transform(BoneButtonsPanel, Panel):
bl_label = "Transform"
@classmethod
@@ -102,7 +103,7 @@ class BONE_PT_transform(BoneButtonsPanel, bpy.types.Panel):
sub.prop(bone, "lock")
-class BONE_PT_transform_locks(BoneButtonsPanel, bpy.types.Panel):
+class BONE_PT_transform_locks(BoneButtonsPanel, Panel):
bl_label = "Transform Locks"
bl_options = {'DEFAULT_CLOSED'}
@@ -135,7 +136,7 @@ class BONE_PT_transform_locks(BoneButtonsPanel, bpy.types.Panel):
row.column().prop(pchan, "lock_scale")
-class BONE_PT_relations(BoneButtonsPanel, bpy.types.Panel):
+class BONE_PT_relations(BoneButtonsPanel, Panel):
bl_label = "Relations"
def draw(self, context):
@@ -180,7 +181,7 @@ class BONE_PT_relations(BoneButtonsPanel, bpy.types.Panel):
sub.prop(bone, "use_local_location", text="Local Location")
-class BONE_PT_display(BoneButtonsPanel, bpy.types.Panel):
+class BONE_PT_display(BoneButtonsPanel, Panel):
bl_label = "Display"
@classmethod
@@ -217,7 +218,7 @@ class BONE_PT_display(BoneButtonsPanel, bpy.types.Panel):
col.prop_search(pchan, "custom_shape_transform", ob.pose, "bones", text="At")
-class BONE_PT_inverse_kinematics(BoneButtonsPanel, bpy.types.Panel):
+class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
bl_label = "Inverse Kinematics"
bl_options = {'DEFAULT_CLOSED'}
@@ -308,7 +309,7 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, bpy.types.Panel):
#row.prop(pchan, "ik_linear_weight", text="Weight", slider=True)
-class BONE_PT_deform(BoneButtonsPanel, bpy.types.Panel):
+class BONE_PT_deform(BoneButtonsPanel, Panel):
bl_label = "Deform"
bl_options = {'DEFAULT_CLOSED'}
@@ -357,7 +358,7 @@ class BONE_PT_deform(BoneButtonsPanel, bpy.types.Panel):
col.prop(bone, "use_cyclic_offset")
-class BONE_PT_custom_props(BoneButtonsPanel, PropertyPanel, bpy.types.Panel):
+class BONE_PT_custom_props(BoneButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_property_type = bpy.types.Bone, bpy.types.EditBone, bpy.types.PoseBone
diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py
index 80cd5227fca..f484d7b59e1 100644
--- a/release/scripts/startup/bl_ui/properties_data_camera.py
+++ b/release/scripts/startup/bl_ui/properties_data_camera.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from rna_prop_ui import PropertyPanel
@@ -32,7 +33,7 @@ class CameraButtonsPanel():
return context.camera and (engine in cls.COMPAT_ENGINES)
-class DATA_PT_context_camera(CameraButtonsPanel, bpy.types.Panel):
+class DATA_PT_context_camera(CameraButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -53,7 +54,7 @@ class DATA_PT_context_camera(CameraButtonsPanel, bpy.types.Panel):
split.separator()
-class DATA_PT_camera(CameraButtonsPanel, bpy.types.Panel):
+class DATA_PT_camera(CameraButtonsPanel, Panel):
bl_label = "Lens"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -111,7 +112,7 @@ class DATA_PT_camera(CameraButtonsPanel, bpy.types.Panel):
col.prop(cam, "dof_distance", text="Distance")
-class DATA_PT_camera_display(CameraButtonsPanel, bpy.types.Panel):
+class DATA_PT_camera_display(CameraButtonsPanel, Panel):
bl_label = "Display"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -138,7 +139,7 @@ class DATA_PT_camera_display(CameraButtonsPanel, bpy.types.Panel):
sub.prop(cam, "passepartout_alpha", text="Alpha", slider=True)
-class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, bpy.types.Panel):
+class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "object.data"
_property_type = bpy.types.Camera
diff --git a/release/scripts/startup/bl_ui/properties_data_curve.py b/release/scripts/startup/bl_ui/properties_data_curve.py
index a0aacc4cec8..6448b9a5229 100644
--- a/release/scripts/startup/bl_ui/properties_data_curve.py
+++ b/release/scripts/startup/bl_ui/properties_data_curve.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from rna_prop_ui import PropertyPanel
@@ -48,7 +49,7 @@ class CurveButtonsPanelActive(CurveButtonsPanel):
return (curve and type(curve) is not bpy.types.TextCurve and curve.splines.active)
-class DATA_PT_context_curve(CurveButtonsPanel, bpy.types.Panel):
+class DATA_PT_context_curve(CurveButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
@@ -65,7 +66,7 @@ class DATA_PT_context_curve(CurveButtonsPanel, bpy.types.Panel):
layout.template_ID(space, "pin_id") # XXX: broken
-class DATA_PT_shape_curve(CurveButtonsPanel, bpy.types.Panel):
+class DATA_PT_shape_curve(CurveButtonsPanel, Panel):
bl_label = "Shape"
def draw(self, context):
@@ -108,13 +109,13 @@ class DATA_PT_shape_curve(CurveButtonsPanel, bpy.types.Panel):
if (is_curve or is_text):
col.label(text="Fill:")
sub = col.column()
- sub.active = (curve.bevel_object is None)
+ sub.active = (curve.dimensions == '2D' or (curve.bevel_object is None and curve.dimensions == '3D'))
sub.prop(curve, "use_fill_front")
sub.prop(curve, "use_fill_back")
col.prop(curve, "use_fill_deform", text="Fill Deformed")
-class DATA_PT_curve_texture_space(CurveButtonsPanel, bpy.types.Panel):
+class DATA_PT_curve_texture_space(CurveButtonsPanel, Panel):
bl_label = "Texture Space"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -133,7 +134,7 @@ class DATA_PT_curve_texture_space(CurveButtonsPanel, bpy.types.Panel):
row.column().prop(curve, "texspace_size", text="Size")
-class DATA_PT_geometry_curve(CurveButtonsPanel, bpy.types.Panel):
+class DATA_PT_geometry_curve(CurveButtonsPanel, Panel):
bl_label = "Geometry"
@classmethod
@@ -166,7 +167,7 @@ class DATA_PT_geometry_curve(CurveButtonsPanel, bpy.types.Panel):
col.prop(curve, "bevel_object", text="")
-class DATA_PT_pathanim(CurveButtonsPanelCurve, bpy.types.Panel):
+class DATA_PT_pathanim(CurveButtonsPanelCurve, Panel):
bl_label = "Path Animation"
def draw_header(self, context):
@@ -197,7 +198,7 @@ class DATA_PT_pathanim(CurveButtonsPanelCurve, bpy.types.Panel):
col.prop(curve, "use_time_offset", text="Offset Children")
-class DATA_PT_active_spline(CurveButtonsPanelActive, bpy.types.Panel):
+class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
bl_label = "Active Spline"
def draw(self, context):
@@ -268,7 +269,7 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, bpy.types.Panel):
layout.prop(act_spline, "use_smooth")
-class DATA_PT_font(CurveButtonsPanel, bpy.types.Panel):
+class DATA_PT_font(CurveButtonsPanel, Panel):
bl_label = "Font"
@classmethod
@@ -332,7 +333,7 @@ class DATA_PT_font(CurveButtonsPanel, bpy.types.Panel):
row.prop(char, "use_small_caps")
-class DATA_PT_paragraph(CurveButtonsPanel, bpy.types.Panel):
+class DATA_PT_paragraph(CurveButtonsPanel, Panel):
bl_label = "Paragraph"
@classmethod
@@ -361,7 +362,7 @@ class DATA_PT_paragraph(CurveButtonsPanel, bpy.types.Panel):
col.prop(text, "offset_y", text="Y")
-class DATA_PT_text_boxes(CurveButtonsPanel, bpy.types.Panel):
+class DATA_PT_text_boxes(CurveButtonsPanel, Panel):
bl_label = "Text Boxes"
@classmethod
@@ -401,7 +402,7 @@ class DATA_PT_text_boxes(CurveButtonsPanel, bpy.types.Panel):
row.operator("font.textbox_remove", text='', icon='X', emboss=False).index = i
-class DATA_PT_custom_props_curve(CurveButtonsPanel, PropertyPanel, bpy.types.Panel):
+class DATA_PT_custom_props_curve(CurveButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "object.data"
_property_type = bpy.types.Curve
diff --git a/release/scripts/startup/bl_ui/properties_data_empty.py b/release/scripts/startup/bl_ui/properties_data_empty.py
index 42b0af7eaf5..c781873e16c 100644
--- a/release/scripts/startup/bl_ui/properties_data_empty.py
+++ b/release/scripts/startup/bl_ui/properties_data_empty.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
class DataButtonsPanel():
@@ -30,7 +31,7 @@ class DataButtonsPanel():
return (context.object and context.object.type == 'EMPTY')
-class DATA_PT_empty(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_empty(DataButtonsPanel, Panel):
bl_label = "Empty"
def draw(self, context):
diff --git a/release/scripts/startup/bl_ui/properties_data_lamp.py b/release/scripts/startup/bl_ui/properties_data_lamp.py
index 36010c8b511..4ff180f74fb 100644
--- a/release/scripts/startup/bl_ui/properties_data_lamp.py
+++ b/release/scripts/startup/bl_ui/properties_data_lamp.py
@@ -18,15 +18,16 @@
# <pep8 compliant>
import bpy
+from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel
-class LAMP_MT_sunsky_presets(bpy.types.Menu):
+class LAMP_MT_sunsky_presets(Menu):
bl_label = "Sun & Sky Presets"
preset_subdir = "sunsky"
preset_operator = "script.execute_preset"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- draw = bpy.types.Menu.draw_preset
+ draw = Menu.draw_preset
class DataButtonsPanel():
@@ -40,7 +41,7 @@ class DataButtonsPanel():
return context.lamp and (engine in cls.COMPAT_ENGINES)
-class DATA_PT_context_lamp(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_context_lamp(DataButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -65,7 +66,7 @@ class DATA_PT_context_lamp(DataButtonsPanel, bpy.types.Panel):
split.label(text=str(texture_count), icon='TEXTURE')
-class DATA_PT_preview(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_preview(DataButtonsPanel, Panel):
bl_label = "Preview"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -73,7 +74,7 @@ class DATA_PT_preview(DataButtonsPanel, bpy.types.Panel):
self.layout.template_preview(context.lamp)
-class DATA_PT_lamp(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_lamp(DataButtonsPanel, Panel):
bl_label = "Lamp"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -115,7 +116,7 @@ class DATA_PT_lamp(DataButtonsPanel, bpy.types.Panel):
col.prop(lamp, "use_diffuse")
-class DATA_PT_sunsky(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_sunsky(DataButtonsPanel, Panel):
bl_label = "Sky & Atmosphere"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -187,7 +188,7 @@ class DATA_PT_sunsky(DataButtonsPanel, bpy.types.Panel):
sub.prop(lamp, "atmosphere_extinction", slider=True, text="Extinction")
-class DATA_PT_shadow(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_shadow(DataButtonsPanel, Panel):
bl_label = "Shadow"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -302,7 +303,7 @@ class DATA_PT_shadow(DataButtonsPanel, bpy.types.Panel):
sub.prop(lamp, "shadow_buffer_clip_end", text=" Clip End")
-class DATA_PT_area(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_area(DataButtonsPanel, Panel):
bl_label = "Area Shape"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -328,7 +329,7 @@ class DATA_PT_area(DataButtonsPanel, bpy.types.Panel):
sub.prop(lamp, "size_y", text="Size Y")
-class DATA_PT_spot(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_spot(DataButtonsPanel, Panel):
bl_label = "Spot Shape"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -362,7 +363,7 @@ class DATA_PT_spot(DataButtonsPanel, bpy.types.Panel):
sub.prop(lamp, "halo_step", text="Step")
-class DATA_PT_falloff_curve(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_falloff_curve(DataButtonsPanel, Panel):
bl_label = "Falloff Curve"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -380,7 +381,7 @@ class DATA_PT_falloff_curve(DataButtonsPanel, bpy.types.Panel):
self.layout.template_curve_mapping(lamp, "falloff_curve")
-class DATA_PT_custom_props_lamp(DataButtonsPanel, PropertyPanel, bpy.types.Panel):
+class DATA_PT_custom_props_lamp(DataButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "object.data"
_property_type = bpy.types.Lamp
diff --git a/release/scripts/startup/bl_ui/properties_data_lattice.py b/release/scripts/startup/bl_ui/properties_data_lattice.py
index cd719b6fe84..14d6ea66894 100644
--- a/release/scripts/startup/bl_ui/properties_data_lattice.py
+++ b/release/scripts/startup/bl_ui/properties_data_lattice.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from rna_prop_ui import PropertyPanel
@@ -31,7 +32,7 @@ class DataButtonsPanel():
return context.lattice
-class DATA_PT_context_lattice(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_context_lattice(DataButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
@@ -51,7 +52,7 @@ class DATA_PT_context_lattice(DataButtonsPanel, bpy.types.Panel):
split.separator()
-class DATA_PT_lattice(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_lattice(DataButtonsPanel, Panel):
bl_label = "Lattice"
def draw(self, context):
@@ -76,7 +77,7 @@ class DATA_PT_lattice(DataButtonsPanel, bpy.types.Panel):
row.prop_search(lat, "vertex_group", context.object, "vertex_groups", text="")
-class DATA_PT_custom_props_lattice(DataButtonsPanel, PropertyPanel, bpy.types.Panel):
+class DATA_PT_custom_props_lattice(DataButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "object.data"
_property_type = bpy.types.Lattice
diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py
index 618a88f0879..896b76c59f6 100644
--- a/release/scripts/startup/bl_ui/properties_data_mesh.py
+++ b/release/scripts/startup/bl_ui/properties_data_mesh.py
@@ -18,10 +18,11 @@
# <pep8 compliant>
import bpy
+from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel
-class MESH_MT_vertex_group_specials(bpy.types.Menu):
+class MESH_MT_vertex_group_specials(Menu):
bl_label = "Vertex Group Specials"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -36,7 +37,7 @@ class MESH_MT_vertex_group_specials(bpy.types.Menu):
layout.operator("object.vertex_group_remove", icon='X', text="Delete All").all = True
-class MESH_MT_shape_key_specials(bpy.types.Menu):
+class MESH_MT_shape_key_specials(Menu):
bl_label = "Shape Key Specials"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -61,7 +62,7 @@ class MeshButtonsPanel():
return context.mesh and (engine in cls.COMPAT_ENGINES)
-class DATA_PT_context_mesh(MeshButtonsPanel, bpy.types.Panel):
+class DATA_PT_context_mesh(MeshButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -72,14 +73,14 @@ class DATA_PT_context_mesh(MeshButtonsPanel, bpy.types.Panel):
ob = context.object
mesh = context.mesh
space = context.space_data
-
+ layout.prop(context.scene.tool_settings, "mesh_select_mode", index=0, text="Vertex")
if ob:
layout.template_ID(ob, "data")
elif mesh:
layout.template_ID(space, "pin_id")
-class DATA_PT_normals(MeshButtonsPanel, bpy.types.Panel):
+class DATA_PT_normals(MeshButtonsPanel, Panel):
bl_label = "Normals"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -99,7 +100,7 @@ class DATA_PT_normals(MeshButtonsPanel, bpy.types.Panel):
split.prop(mesh, "show_double_sided")
-class DATA_PT_texture_space(MeshButtonsPanel, bpy.types.Panel):
+class DATA_PT_texture_space(MeshButtonsPanel, Panel):
bl_label = "Texture Space"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -119,7 +120,7 @@ class DATA_PT_texture_space(MeshButtonsPanel, bpy.types.Panel):
row.column().prop(mesh, "texspace_size", text="Size")
-class DATA_PT_vertex_groups(MeshButtonsPanel, bpy.types.Panel):
+class DATA_PT_vertex_groups(MeshButtonsPanel, Panel):
bl_label = "Vertex Groups"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -168,7 +169,7 @@ class DATA_PT_vertex_groups(MeshButtonsPanel, bpy.types.Panel):
layout.prop(context.tool_settings, "vertex_group_weight", text="Weight")
-class DATA_PT_shape_keys(MeshButtonsPanel, bpy.types.Panel):
+class DATA_PT_shape_keys(MeshButtonsPanel, Panel):
bl_label = "Shape Keys"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -261,7 +262,7 @@ class DATA_PT_shape_keys(MeshButtonsPanel, bpy.types.Panel):
row.prop(key, "slurph")
-class DATA_PT_uv_texture(MeshButtonsPanel, bpy.types.Panel):
+class DATA_PT_uv_texture(MeshButtonsPanel, Panel):
bl_label = "UV Texture"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -284,7 +285,7 @@ class DATA_PT_uv_texture(MeshButtonsPanel, bpy.types.Panel):
layout.prop(lay, "name")
-class DATA_PT_texface(MeshButtonsPanel, bpy.types.Panel):
+class DATA_PT_texface(MeshButtonsPanel, Panel):
bl_label = "Texture Face"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -331,7 +332,7 @@ class DATA_PT_texface(MeshButtonsPanel, bpy.types.Panel):
col.label(text="No UV Texture")
-class DATA_PT_vertex_colors(MeshButtonsPanel, bpy.types.Panel):
+class DATA_PT_vertex_colors(MeshButtonsPanel, Panel):
bl_label = "Vertex Colors"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -354,7 +355,7 @@ class DATA_PT_vertex_colors(MeshButtonsPanel, bpy.types.Panel):
layout.prop(lay, "name")
-class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, bpy.types.Panel):
+class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "object.data"
_property_type = bpy.types.Mesh
diff --git a/release/scripts/startup/bl_ui/properties_data_metaball.py b/release/scripts/startup/bl_ui/properties_data_metaball.py
index 6dda99bc37f..cd894e60dbb 100644
--- a/release/scripts/startup/bl_ui/properties_data_metaball.py
+++ b/release/scripts/startup/bl_ui/properties_data_metaball.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from rna_prop_ui import PropertyPanel
@@ -31,7 +32,7 @@ class DataButtonsPanel():
return context.meta_ball
-class DATA_PT_context_metaball(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_context_metaball(DataButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
@@ -48,7 +49,7 @@ class DATA_PT_context_metaball(DataButtonsPanel, bpy.types.Panel):
layout.template_ID(space, "pin_id")
-class DATA_PT_metaball(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_metaball(DataButtonsPanel, Panel):
bl_label = "Metaball"
def draw(self, context):
@@ -72,7 +73,7 @@ class DATA_PT_metaball(DataButtonsPanel, bpy.types.Panel):
layout.prop(mball, "update_method", expand=True)
-class DATA_PT_mball_texture_space(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_mball_texture_space(DataButtonsPanel, Panel):
bl_label = "Texture Space"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -89,7 +90,7 @@ class DATA_PT_mball_texture_space(DataButtonsPanel, bpy.types.Panel):
row.column().prop(mball, "texspace_size", text="Size")
-class DATA_PT_metaball_element(DataButtonsPanel, bpy.types.Panel):
+class DATA_PT_metaball_element(DataButtonsPanel, Panel):
bl_label = "Active Element"
@classmethod
@@ -129,7 +130,7 @@ class DATA_PT_metaball_element(DataButtonsPanel, bpy.types.Panel):
col.prop(metaelem, "size_y", text="Y")
-class DATA_PT_custom_props_metaball(DataButtonsPanel, PropertyPanel, bpy.types.Panel):
+class DATA_PT_custom_props_metaball(DataButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "object.data"
_property_type = bpy.types.MetaBall
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 0a4d0b60514..179921c3c85 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
class ModifierButtonsPanel():
@@ -26,7 +27,7 @@ class ModifierButtonsPanel():
bl_context = "modifier"
-class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
+class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
bl_label = "Modifiers"
def draw(self, context):
@@ -576,13 +577,13 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
sub = col.column()
sub.active = bool(md.vertex_group)
sub.prop(md, "invert_vertex_group", text="Invert")
+ sub.prop(md, "thickness_vertex_group", text="Factor")
col.prop(md, "use_even_offset")
col.prop(md, "use_quality_normals")
col.prop(md, "use_rim")
sub = col.column()
- sub.label()
row = sub.split(align=True, percentage=0.4)
row.prop(md, "material_offset", text="")
row = row.row()
diff --git a/release/scripts/startup/bl_ui/properties_game.py b/release/scripts/startup/bl_ui/properties_game.py
index dc397635452..e3c576e7093 100644
--- a/release/scripts/startup/bl_ui/properties_game.py
+++ b/release/scripts/startup/bl_ui/properties_game.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
class PhysicsButtonsPanel():
@@ -26,7 +27,7 @@ class PhysicsButtonsPanel():
bl_context = "physics"
-class PHYSICS_PT_game_physics(PhysicsButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
bl_label = "Physics"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -167,7 +168,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, bpy.types.Panel):
layout.prop(ob, "hide_render", text="Invisible")
-class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel, Panel):
bl_label = "Collision Bounds"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -206,7 +207,7 @@ class RenderButtonsPanel():
return (rd.engine in cls.COMPAT_ENGINES)
-class RENDER_PT_game(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_game(RenderButtonsPanel, Panel):
bl_label = "Game"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -218,7 +219,7 @@ class RENDER_PT_game(RenderButtonsPanel, bpy.types.Panel):
row.label()
-class RENDER_PT_game_player(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_game_player(RenderButtonsPanel, Panel):
bl_label = "Standalone Player"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -251,7 +252,7 @@ class RENDER_PT_game_player(RenderButtonsPanel, bpy.types.Panel):
col.prop(gs, "frame_color", text="")
-class RENDER_PT_game_stereo(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_game_stereo(RenderButtonsPanel, Panel):
bl_label = "Stereo"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -305,7 +306,7 @@ class RENDER_PT_game_stereo(RenderButtonsPanel, bpy.types.Panel):
layout.prop(gs, "dome_text")
-class RENDER_PT_game_shading(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_game_shading(RenderButtonsPanel, Panel):
bl_label = "Shading"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -331,7 +332,7 @@ class RENDER_PT_game_shading(RenderButtonsPanel, bpy.types.Panel):
col.prop(gs, "use_glsl_extra_textures", text="Extra Textures")
-class RENDER_PT_game_performance(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_game_performance(RenderButtonsPanel, Panel):
bl_label = "Performance"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -345,7 +346,7 @@ class RENDER_PT_game_performance(RenderButtonsPanel, bpy.types.Panel):
row.prop(gs, "restrict_animation_updates")
-class RENDER_PT_game_display(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_game_display(RenderButtonsPanel, Panel):
bl_label = "Display"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -367,7 +368,7 @@ class WorldButtonsPanel():
bl_context = "world"
-class WORLD_PT_game_context_world(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_game_context_world(WorldButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -391,7 +392,7 @@ class WORLD_PT_game_context_world(WorldButtonsPanel, bpy.types.Panel):
split.template_ID(space, "pin_id")
-class WORLD_PT_game_world(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_game_world(WorldButtonsPanel, Panel):
bl_label = "World"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -410,7 +411,7 @@ class WORLD_PT_game_world(WorldButtonsPanel, bpy.types.Panel):
row.column().prop(world, "ambient_color")
-class WORLD_PT_game_mist(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_game_mist(WorldButtonsPanel, Panel):
bl_label = "Mist"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -436,7 +437,7 @@ class WORLD_PT_game_mist(WorldButtonsPanel, bpy.types.Panel):
row.prop(world.mist_settings, "depth")
-class WORLD_PT_game_physics(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_game_physics(WorldButtonsPanel, Panel):
bl_label = "Physics"
COMPAT_ENGINES = {'BLENDER_GAME'}
diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py
index 296c05d78f5..13ce92f084c 100644
--- a/release/scripts/startup/bl_ui/properties_material.py
+++ b/release/scripts/startup/bl_ui/properties_material.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel
@@ -50,14 +51,14 @@ def simple_material(mat):
return False
-class MATERIAL_MT_sss_presets(bpy.types.Menu):
+class MATERIAL_MT_sss_presets(Menu):
bl_label = "SSS Presets"
preset_subdir = "sss"
preset_operator = "script.execute_preset"
- draw = bpy.types.Menu.draw_preset
+ draw = Menu.draw_preset
-class MATERIAL_MT_specials(bpy.types.Menu):
+class MATERIAL_MT_specials(Menu):
bl_label = "Material Specials"
def draw(self, context):
@@ -79,7 +80,7 @@ class MaterialButtonsPanel():
return context.material and (context.scene.render.engine in cls.COMPAT_ENGINES)
-class MATERIAL_PT_context_material(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -144,7 +145,7 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, bpy.types.Panel):
row.label(text="No material node selected")
-class MATERIAL_PT_preview(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_preview(MaterialButtonsPanel, Panel):
bl_label = "Preview"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -152,7 +153,7 @@ class MATERIAL_PT_preview(MaterialButtonsPanel, bpy.types.Panel):
self.layout.template_preview(context.material)
-class MATERIAL_PT_pipeline(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_pipeline(MaterialButtonsPanel, Panel):
bl_label = "Render Pipeline Options"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -203,7 +204,7 @@ class MATERIAL_PT_pipeline(MaterialButtonsPanel, bpy.types.Panel):
col.prop(mat, "pass_index")
-class MATERIAL_PT_diffuse(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_diffuse(MaterialButtonsPanel, Panel):
bl_label = "Diffuse"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -260,7 +261,7 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel, bpy.types.Panel):
col.prop(mat, "diffuse_ramp_factor", text="Factor")
-class MATERIAL_PT_specular(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_specular(MaterialButtonsPanel, Panel):
bl_label = "Specular"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -313,7 +314,7 @@ class MATERIAL_PT_specular(MaterialButtonsPanel, bpy.types.Panel):
layout.prop(mat, "specular_ramp_factor", text="Factor")
-class MATERIAL_PT_shading(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_shading(MaterialButtonsPanel, Panel):
bl_label = "Shading"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -347,7 +348,7 @@ class MATERIAL_PT_shading(MaterialButtonsPanel, bpy.types.Panel):
sub.prop(mat, "use_cubic")
-class MATERIAL_PT_transp(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_transp(MaterialButtonsPanel, Panel):
bl_label = "Transparency"
# bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -413,7 +414,7 @@ class MATERIAL_PT_transp(MaterialButtonsPanel, bpy.types.Panel):
sub.prop(rayt, "gloss_samples", text="Samples")
-class MATERIAL_PT_mirror(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_mirror(MaterialButtonsPanel, Panel):
bl_label = "Mirror"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -471,7 +472,7 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel, bpy.types.Panel):
sub.prop(raym, "gloss_anisotropic", text="Anisotropic")
-class MATERIAL_PT_sss(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_sss(MaterialButtonsPanel, Panel):
bl_label = "Subsurface Scattering"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -523,7 +524,7 @@ class MATERIAL_PT_sss(MaterialButtonsPanel, bpy.types.Panel):
col.prop(sss, "error_threshold", text="Error")
-class MATERIAL_PT_halo(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_halo(MaterialButtonsPanel, Panel):
bl_label = "Halo"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -576,7 +577,7 @@ class MATERIAL_PT_halo(MaterialButtonsPanel, bpy.types.Panel):
number_but(col, "use_star", "star_tip_count", "Star tips", "")
-class MATERIAL_PT_flare(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_flare(MaterialButtonsPanel, Panel):
bl_label = "Flare"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -611,7 +612,7 @@ class MATERIAL_PT_flare(MaterialButtonsPanel, bpy.types.Panel):
col.prop(halo, "flare_subflare_size", text="Subsize")
-class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_physics(MaterialButtonsPanel, Panel):
bl_label = "Physics"
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -641,7 +642,7 @@ class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel):
row.prop(phys, "use_fh_normal")
-class MATERIAL_PT_strand(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_strand(MaterialButtonsPanel, Panel):
bl_label = "Strand"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -688,7 +689,7 @@ class MATERIAL_PT_strand(MaterialButtonsPanel, bpy.types.Panel):
sub.prop(tan, "blend_distance", text="Distance")
-class MATERIAL_PT_options(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_options(MaterialButtonsPanel, Panel):
bl_label = "Options"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -737,7 +738,7 @@ class MATERIAL_PT_options(MaterialButtonsPanel, bpy.types.Panel):
col.prop(mat, "pass_index")
-class MATERIAL_PT_shadow(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_shadow(MaterialButtonsPanel, Panel):
bl_label = "Shadow"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -781,7 +782,7 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel, bpy.types.Panel):
col.prop(mat, "use_cast_approximate")
-class MATERIAL_PT_transp_game(MaterialButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_transp_game(MaterialButtonsPanel, Panel):
bl_label = "Transparency"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_GAME'}
@@ -824,7 +825,7 @@ class VolumeButtonsPanel():
return mat and (mat.type == 'VOLUME') and (engine in cls.COMPAT_ENGINES)
-class MATERIAL_PT_volume_density(VolumeButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_volume_density(VolumeButtonsPanel, Panel):
bl_label = "Density"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -838,7 +839,7 @@ class MATERIAL_PT_volume_density(VolumeButtonsPanel, bpy.types.Panel):
row.prop(vol, "density_scale")
-class MATERIAL_PT_volume_shading(VolumeButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_volume_shading(VolumeButtonsPanel, Panel):
bl_label = "Shading"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -863,7 +864,7 @@ class MATERIAL_PT_volume_shading(VolumeButtonsPanel, bpy.types.Panel):
sub.prop(vol, "reflection_color", text="")
-class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, Panel):
bl_label = "Lighting"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -898,7 +899,7 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, bpy.types.Panel):
sub.prop(vol, "ms_intensity")
-class MATERIAL_PT_volume_transp(VolumeButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_volume_transp(VolumeButtonsPanel, Panel):
bl_label = "Transparency"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -916,7 +917,7 @@ class MATERIAL_PT_volume_transp(VolumeButtonsPanel, bpy.types.Panel):
layout.prop(mat, "transparency_method", expand=True)
-class MATERIAL_PT_volume_integration(VolumeButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_volume_integration(VolumeButtonsPanel, Panel):
bl_label = "Integration"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -938,7 +939,7 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel, bpy.types.Panel):
col.prop(vol, "depth_threshold")
-class MATERIAL_PT_volume_options(VolumeButtonsPanel, bpy.types.Panel):
+class MATERIAL_PT_volume_options(VolumeButtonsPanel, Panel):
bl_label = "Options"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
bl_options = {'DEFAULT_CLOSED'}
@@ -970,7 +971,7 @@ class MATERIAL_PT_volume_options(VolumeButtonsPanel, bpy.types.Panel):
row.prop(mat, "use_light_group_exclusive", text="Exclusive")
-class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, bpy.types.Panel):
+class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "material"
_property_type = bpy.types.Material
diff --git a/release/scripts/startup/bl_ui/properties_object.py b/release/scripts/startup/bl_ui/properties_object.py
index cdbcf2cf533..0779debb102 100644
--- a/release/scripts/startup/bl_ui/properties_object.py
+++ b/release/scripts/startup/bl_ui/properties_object.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from rna_prop_ui import PropertyPanel
@@ -27,7 +28,7 @@ class ObjectButtonsPanel():
bl_context = "object"
-class OBJECT_PT_context_object(ObjectButtonsPanel, bpy.types.Panel):
+class OBJECT_PT_context_object(ObjectButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
@@ -42,7 +43,7 @@ class OBJECT_PT_context_object(ObjectButtonsPanel, bpy.types.Panel):
row.template_ID(context.scene.objects, "active")
-class OBJECT_PT_transform(ObjectButtonsPanel, bpy.types.Panel):
+class OBJECT_PT_transform(ObjectButtonsPanel, Panel):
bl_label = "Transform"
def draw(self, context):
@@ -68,7 +69,7 @@ class OBJECT_PT_transform(ObjectButtonsPanel, bpy.types.Panel):
layout.prop(ob, "rotation_mode")
-class OBJECT_PT_delta_transform(ObjectButtonsPanel, bpy.types.Panel):
+class OBJECT_PT_delta_transform(ObjectButtonsPanel, Panel):
bl_label = "Delta Transform"
bl_options = {'DEFAULT_CLOSED'}
@@ -94,7 +95,7 @@ class OBJECT_PT_delta_transform(ObjectButtonsPanel, bpy.types.Panel):
row.column().prop(ob, "delta_scale")
-class OBJECT_PT_transform_locks(ObjectButtonsPanel, bpy.types.Panel):
+class OBJECT_PT_transform_locks(ObjectButtonsPanel, Panel):
bl_label = "Transform Locks"
bl_options = {'DEFAULT_CLOSED'}
@@ -120,7 +121,7 @@ class OBJECT_PT_transform_locks(ObjectButtonsPanel, bpy.types.Panel):
row.column().prop(ob, "lock_scale", text="Scale")
-class OBJECT_PT_relations(ObjectButtonsPanel, bpy.types.Panel):
+class OBJECT_PT_relations(ObjectButtonsPanel, Panel):
bl_label = "Relations"
def draw(self, context):
@@ -147,7 +148,7 @@ class OBJECT_PT_relations(ObjectButtonsPanel, bpy.types.Panel):
sub.active = (parent is not None)
-class OBJECT_PT_groups(ObjectButtonsPanel, bpy.types.Panel):
+class OBJECT_PT_groups(ObjectButtonsPanel, Panel):
bl_label = "Groups"
def draw(self, context):
@@ -186,7 +187,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel, bpy.types.Panel):
index += 1
-class OBJECT_PT_display(ObjectButtonsPanel, bpy.types.Panel):
+class OBJECT_PT_display(ObjectButtonsPanel, Panel):
bl_label = "Display"
def draw(self, context):
@@ -220,7 +221,7 @@ class OBJECT_PT_display(ObjectButtonsPanel, bpy.types.Panel):
col.prop(ob, "show_transparent", text="Transparency")
-class OBJECT_PT_duplication(ObjectButtonsPanel, bpy.types.Panel):
+class OBJECT_PT_duplication(ObjectButtonsPanel, Panel):
bl_label = "Duplication"
def draw(self, context):
@@ -258,7 +259,7 @@ class OBJECT_PT_duplication(ObjectButtonsPanel, bpy.types.Panel):
# XXX: the following options are all quite buggy, ancient hacks that should be dropped
-class OBJECT_PT_animation(ObjectButtonsPanel, bpy.types.Panel):
+class OBJECT_PT_animation(ObjectButtonsPanel, Panel):
bl_label = "Animation Hacks"
bl_options = {'DEFAULT_CLOSED'}
@@ -293,7 +294,7 @@ from bl_ui.properties_animviz import (
)
-class OBJECT_PT_motion_paths(MotionPathButtonsPanel, bpy.types.Panel):
+class OBJECT_PT_motion_paths(MotionPathButtonsPanel, Panel):
#bl_label = "Object Motion Paths"
bl_context = "object"
@@ -315,7 +316,7 @@ class OBJECT_PT_motion_paths(MotionPathButtonsPanel, bpy.types.Panel):
row.operator("object.paths_clear", text="Clear Paths")
-class OBJECT_PT_onion_skinning(OnionSkinButtonsPanel): # , bpy.types.Panel): # inherit from panel when ready
+class OBJECT_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from panel when ready
#bl_label = "Object Onion Skinning"
bl_context = "object"
@@ -329,7 +330,7 @@ class OBJECT_PT_onion_skinning(OnionSkinButtonsPanel): # , bpy.types.Panel): #
self.draw_settings(context, ob.animation_visualisation)
-class OBJECT_PT_custom_props(ObjectButtonsPanel, PropertyPanel, bpy.types.Panel):
+class OBJECT_PT_custom_props(ObjectButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "object"
_property_type = bpy.types.Object
diff --git a/release/scripts/startup/bl_ui/properties_object_constraint.py b/release/scripts/startup/bl_ui/properties_object_constraint.py
index a17341d72e8..c74a0000499 100644
--- a/release/scripts/startup/bl_ui/properties_object_constraint.py
+++ b/release/scripts/startup/bl_ui/properties_object_constraint.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
class ConstraintButtonsPanel():
@@ -760,7 +761,7 @@ class ConstraintButtonsPanel():
layout.label("Blender 2.5 has no py-constraints")
-class OBJECT_PT_constraints(ConstraintButtonsPanel, bpy.types.Panel):
+class OBJECT_PT_constraints(ConstraintButtonsPanel, Panel):
bl_label = "Object Constraints"
bl_context = "constraint"
@@ -784,7 +785,7 @@ class OBJECT_PT_constraints(ConstraintButtonsPanel, bpy.types.Panel):
self.draw_constraint(context, con)
-class BONE_PT_constraints(ConstraintButtonsPanel, bpy.types.Panel):
+class BONE_PT_constraints(ConstraintButtonsPanel, Panel):
bl_label = "Bone Constraints"
bl_context = "bone_constraint"
diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py
index 2870aab75ef..03243d1153b 100644
--- a/release/scripts/startup/bl_ui/properties_particle.py
+++ b/release/scripts/startup/bl_ui/properties_particle.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from rna_prop_ui import PropertyPanel
from bl_ui.properties_physics_common import (
@@ -72,7 +73,7 @@ class ParticleButtonsPanel():
return particle_panel_poll(cls, context)
-class PARTICLE_PT_context_particles(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -176,7 +177,7 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, bpy.types.Panel):
split.prop(psys, "reactor_target_particle_system", text="Particle System")
-class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_emission(ParticleButtonsPanel, Panel):
bl_label = "Emission"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -245,7 +246,7 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
row.prop(part, "grid_random", text="Random", slider=True)
-class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel):
bl_label = "Hair dynamics"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -301,7 +302,7 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, bpy.types.Panel):
col.prop(cloth, "quality", text="Steps", slider=True)
-class PARTICLE_PT_cache(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_cache(ParticleButtonsPanel, Panel):
bl_label = "Cache"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -327,7 +328,7 @@ class PARTICLE_PT_cache(ParticleButtonsPanel, bpy.types.Panel):
point_cache_ui(self, context, psys.point_cache, True, 'HAIR' if (psys.settings.type == 'HAIR') else 'PSYS')
-class PARTICLE_PT_velocity(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_velocity(ParticleButtonsPanel, Panel):
bl_label = "Velocity"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -377,7 +378,7 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel, bpy.types.Panel):
# sub.prop(part, "reaction_shape", slider=True)
-class PARTICLE_PT_rotation(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel):
bl_label = "Rotation"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -426,7 +427,7 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, bpy.types.Panel):
col.prop(part, "angular_velocity_factor", text="")
-class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
bl_label = "Physics"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -641,7 +642,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
sub.prop(key, "system", text="System")
-class PARTICLE_PT_boidbrain(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
bl_label = "Boid Brain"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -742,7 +743,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, bpy.types.Panel):
row.prop(rule, "flee_distance")
-class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
bl_label = "Render"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -927,7 +928,7 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
row.prop(part, "size_random", slider=True)
-class PARTICLE_PT_draw(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_draw(ParticleButtonsPanel, Panel):
bl_label = "Display"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -989,7 +990,7 @@ class PARTICLE_PT_draw(ParticleButtonsPanel, bpy.types.Panel):
col.prop(part, "draw_step")
-class PARTICLE_PT_children(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_children(ParticleButtonsPanel, Panel):
bl_label = "Children"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -1089,7 +1090,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel, bpy.types.Panel):
sub.prop(part, "kink_shape", slider=True)
-class PARTICLE_PT_field_weights(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_field_weights(ParticleButtonsPanel, Panel):
bl_label = "Field Weights"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -1110,7 +1111,7 @@ class PARTICLE_PT_field_weights(ParticleButtonsPanel, bpy.types.Panel):
row.prop(part, "effect_hair", slider=True)
-class PARTICLE_PT_force_fields(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_force_fields(ParticleButtonsPanel, Panel):
bl_label = "Force Field Settings"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -1144,7 +1145,7 @@ class PARTICLE_PT_force_fields(ParticleButtonsPanel, bpy.types.Panel):
basic_force_field_falloff_ui(self, context, part.force_field_2)
-class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, bpy.types.Panel):
+class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel):
bl_label = "Vertexgroups"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -1215,7 +1216,7 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, bpy.types.Panel):
# row.prop(psys, "invert_vertex_group_field", text="")
-class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel, bpy.types.Panel):
+class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER'}
_context_path = "particle_system.settings"
_property_type = bpy.types.ParticleSettings
diff --git a/release/scripts/startup/bl_ui/properties_physics_cloth.py b/release/scripts/startup/bl_ui/properties_physics_cloth.py
index bce6ab993a7..d5427d8bae8 100644
--- a/release/scripts/startup/bl_ui/properties_physics_cloth.py
+++ b/release/scripts/startup/bl_ui/properties_physics_cloth.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Menu, Panel
from bl_ui.properties_physics_common import (
@@ -30,14 +31,14 @@ def cloth_panel_enabled(md):
return md.point_cache.is_baked is False
-class CLOTH_MT_presets(bpy.types.Menu):
+class CLOTH_MT_presets(Menu):
'''
Creates the menu items by scanning scripts/templates
'''
bl_label = "Cloth Presets"
preset_subdir = "cloth"
preset_operator = "script.execute_preset"
- draw = bpy.types.Menu.draw_preset
+ draw = Menu.draw_preset
class PhysicButtonsPanel():
@@ -52,7 +53,7 @@ class PhysicButtonsPanel():
return (ob and ob.type == 'MESH') and (not rd.use_game_engine) and (context.cloth)
-class PHYSICS_PT_cloth(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel):
bl_label = "Cloth"
def draw(self, context):
@@ -117,7 +118,7 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, bpy.types.Panel):
col.prop_search(cloth, "rest_shape_key", key, "key_blocks", text="")
-class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, Panel):
bl_label = "Cloth Cache"
bl_options = {'DEFAULT_CLOSED'}
@@ -130,7 +131,7 @@ class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, bpy.types.Panel):
point_cache_ui(self, context, md.point_cache, cloth_panel_enabled(md), 'CLOTH')
-class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, Panel):
bl_label = "Cloth Collision"
bl_options = {'DEFAULT_CLOSED'}
@@ -171,7 +172,7 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, bpy.types.Panel):
layout.prop(cloth, "group")
-class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, Panel):
bl_label = "Cloth Stiffness Scaling"
bl_options = {'DEFAULT_CLOSED'}
@@ -207,7 +208,7 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, bpy.types.Panel):
col.prop(cloth, "bending_stiffness_max", text="Max")
-class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel, Panel):
bl_label = "Cloth Field Weights"
bl_options = {'DEFAULT_CLOSED'}
diff --git a/release/scripts/startup/bl_ui/properties_physics_common.py b/release/scripts/startup/bl_ui/properties_physics_common.py
index f7cf8da1840..204e25d9f01 100644
--- a/release/scripts/startup/bl_ui/properties_physics_common.py
+++ b/release/scripts/startup/bl_ui/properties_physics_common.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
class PhysicButtonsPanel():
@@ -44,7 +45,7 @@ def physics_add(self, layout, md, name, type, typeicon, toggles):
sub.operator("object.modifier_add", text=name, icon=typeicon).type = type
-class PHYSICS_PT_add(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_add(PhysicButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
diff --git a/release/scripts/startup/bl_ui/properties_physics_field.py b/release/scripts/startup/bl_ui/properties_physics_field.py
index 9f96f0a5b9f..e1dc4d04378 100644
--- a/release/scripts/startup/bl_ui/properties_physics_field.py
+++ b/release/scripts/startup/bl_ui/properties_physics_field.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from bl_ui.properties_physics_common import (
@@ -37,7 +38,7 @@ class PhysicButtonsPanel():
return (context.object) and (not rd.use_game_engine)
-class PHYSICS_PT_field(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
bl_label = "Force Fields"
@classmethod
@@ -164,7 +165,7 @@ class PHYSICS_PT_field(PhysicButtonsPanel, bpy.types.Panel):
sub.prop(field, "radial_max", text="Distance")
-class PHYSICS_PT_collision(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_collision(PhysicButtonsPanel, Panel):
bl_label = "Collision"
#bl_options = {'DEFAULT_CLOSED'}
diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py
index c7e3a9e7220..46893af3582 100644
--- a/release/scripts/startup/bl_ui/properties_physics_fluid.py
+++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
class PhysicButtonsPanel():
@@ -32,7 +33,7 @@ class PhysicButtonsPanel():
return (ob and ob.type == 'MESH') and (not rd.use_game_engine) and (context.fluid)
-class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
bl_label = "Fluid"
def draw(self, context):
@@ -186,7 +187,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel):
sub.prop(fluid, "velocity_radius", text="Radius")
-class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, Panel):
bl_label = "Domain World"
bl_options = {'DEFAULT_CLOSED'}
@@ -236,7 +237,7 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, bpy.types.Panel):
col.prop(fluid, "compressibility", slider=True)
-class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, Panel):
bl_label = "Domain Boundary"
bl_options = {'DEFAULT_CLOSED'}
@@ -265,7 +266,7 @@ class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, bpy.types.Panel):
col.prop(fluid, "surface_subdivisions", text="Subdivisions")
-class PHYSICS_PT_domain_particles(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_domain_particles(PhysicButtonsPanel, Panel):
bl_label = "Domain Particles"
bl_options = {'DEFAULT_CLOSED'}
diff --git a/release/scripts/startup/bl_ui/properties_physics_smoke.py b/release/scripts/startup/bl_ui/properties_physics_smoke.py
index 61d8d2e3825..771a778380d 100644
--- a/release/scripts/startup/bl_ui/properties_physics_smoke.py
+++ b/release/scripts/startup/bl_ui/properties_physics_smoke.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from bl_ui.properties_physics_common import (
@@ -38,7 +39,7 @@ class PhysicButtonsPanel():
return (ob and ob.type == 'MESH') and (not rd.use_game_engine) and (context.smoke)
-class PHYSICS_PT_smoke(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel):
bl_label = "Smoke"
def draw(self, context):
@@ -103,7 +104,7 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, bpy.types.Panel):
sub.prop(flow, "temperature")
-class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, Panel):
bl_label = "Smoke Groups"
bl_options = {'DEFAULT_CLOSED'}
@@ -131,7 +132,7 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, bpy.types.Panel):
col.prop(group, "collision_group", text="")
-class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, Panel):
bl_label = "Smoke High Resolution"
bl_options = {'DEFAULT_CLOSED'}
@@ -168,7 +169,7 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, bpy.types.Panel):
layout.prop(md, "show_high_resolution")
-class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, Panel):
bl_label = "Smoke Cache"
bl_options = {'DEFAULT_CLOSED'}
@@ -189,7 +190,7 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, bpy.types.Panel):
point_cache_ui(self, context, cache, (cache.is_baked is False), 'SMOKE')
-class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel, Panel):
bl_label = "Smoke Field Weights"
bl_options = {'DEFAULT_CLOSED'}
diff --git a/release/scripts/startup/bl_ui/properties_physics_softbody.py b/release/scripts/startup/bl_ui/properties_physics_softbody.py
index 61115a0590e..0b55ccf9516 100644
--- a/release/scripts/startup/bl_ui/properties_physics_softbody.py
+++ b/release/scripts/startup/bl_ui/properties_physics_softbody.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from bl_ui.properties_physics_common import (
@@ -44,7 +45,7 @@ class PhysicButtonsPanel():
return (ob and (ob.type == 'MESH' or ob.type == 'LATTICE'or ob.type == 'CURVE')) and (not rd.use_game_engine) and (context.soft_body)
-class PHYSICS_PT_softbody(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_softbody(PhysicButtonsPanel, Panel):
bl_label = "Soft Body"
def draw(self, context):
@@ -71,7 +72,7 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel, bpy.types.Panel):
col.prop(softbody, "speed")
-class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Cache"
bl_options = {'DEFAULT_CLOSED'}
@@ -84,7 +85,7 @@ class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, bpy.types.Panel):
point_cache_ui(self, context, md.point_cache, softbody_panel_enabled(md), 'SOFTBODY')
-class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Goal"
bl_options = {'DEFAULT_CLOSED'}
@@ -127,7 +128,7 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, bpy.types.Panel):
layout.prop_search(softbody, "vertex_group_goal", ob, "vertex_groups", text="Vertex Group")
-class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Edges"
bl_options = {'DEFAULT_CLOSED'}
@@ -180,7 +181,7 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, bpy.types.Panel):
col.prop(softbody, "use_face_collision", text="Face")
-class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Self Collision"
bl_options = {'DEFAULT_CLOSED'}
@@ -212,7 +213,7 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, bpy.types.Panel):
col.prop(softbody, "ball_damp", text="Dampening")
-class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Solver"
bl_options = {'DEFAULT_CLOSED'}
@@ -248,7 +249,7 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, bpy.types.Panel):
layout.prop(softbody, "use_estimate_matrix")
-class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel, bpy.types.Panel):
+class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Field Weights"
bl_options = {'DEFAULT_CLOSED'}
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 9b4b8089c4a..c906013e094 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -18,27 +18,28 @@
# <pep8 compliant>
import bpy
+from bpy.types import Menu, Panel
-class RENDER_MT_presets(bpy.types.Menu):
+class RENDER_MT_presets(Menu):
bl_label = "Render Presets"
preset_subdir = "render"
preset_operator = "script.execute_preset"
- draw = bpy.types.Menu.draw_preset
+ draw = Menu.draw_preset
-class RENDER_MT_ffmpeg_presets(bpy.types.Menu):
+class RENDER_MT_ffmpeg_presets(Menu):
bl_label = "FFMPEG Presets"
preset_subdir = "ffmpeg"
preset_operator = "script.python_file_run"
- draw = bpy.types.Menu.draw_preset
+ draw = Menu.draw_preset
-class RENDER_MT_framerate_presets(bpy.types.Menu):
+class RENDER_MT_framerate_presets(Menu):
bl_label = "Frame Rate Presets"
preset_subdir = "framerate"
preset_operator = "script.execute_preset"
- draw = bpy.types.Menu.draw_preset
+ draw = Menu.draw_preset
class RenderButtonsPanel():
@@ -53,7 +54,7 @@ class RenderButtonsPanel():
return (context.scene and rd.use_game_engine is False) and (rd.engine in cls.COMPAT_ENGINES)
-class RENDER_PT_render(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_render(RenderButtonsPanel, Panel):
bl_label = "Render"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -69,7 +70,7 @@ class RENDER_PT_render(RenderButtonsPanel, bpy.types.Panel):
layout.prop(rd, "display_mode", text="Display")
-class RENDER_PT_layers(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_layers(RenderButtonsPanel, Panel):
bl_label = "Layers"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -173,7 +174,7 @@ class RENDER_PT_layers(RenderButtonsPanel, bpy.types.Panel):
row.prop(rl, "exclude_refraction", text="")
-class RENDER_PT_dimensions(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
bl_label = "Dimensions"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -240,7 +241,7 @@ class RENDER_PT_dimensions(RenderButtonsPanel, bpy.types.Panel):
subrow.prop(rd, "frame_map_new", text="New")
-class RENDER_PT_antialiasing(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_antialiasing(RenderButtonsPanel, Panel):
bl_label = "Anti-Aliasing"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -268,7 +269,7 @@ class RENDER_PT_antialiasing(RenderButtonsPanel, bpy.types.Panel):
col.prop(rd, "filter_size", text="Size")
-class RENDER_PT_motion_blur(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_motion_blur(RenderButtonsPanel, Panel):
bl_label = "Sampled Motion Blur"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -294,7 +295,7 @@ class RENDER_PT_motion_blur(RenderButtonsPanel, bpy.types.Panel):
row.prop(rd, "motion_blur_shutter")
-class RENDER_PT_shading(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_shading(RenderButtonsPanel, Panel):
bl_label = "Shading"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -318,7 +319,7 @@ class RENDER_PT_shading(RenderButtonsPanel, bpy.types.Panel):
col.prop(rd, "alpha_mode", text="Alpha")
-class RENDER_PT_performance(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_performance(RenderButtonsPanel, Panel):
bl_label = "Performance"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -361,7 +362,7 @@ class RENDER_PT_performance(RenderButtonsPanel, bpy.types.Panel):
sub.prop(rd, "use_local_coords", text="Local Coordinates")
-class RENDER_PT_post_processing(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_post_processing(RenderButtonsPanel, Panel):
bl_label = "Post Processing"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -398,7 +399,7 @@ class RENDER_PT_post_processing(RenderButtonsPanel, bpy.types.Panel):
sub.prop(rd, "edge_color", text="")
-class RENDER_PT_stamp(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_stamp(RenderButtonsPanel, Panel):
bl_label = "Stamp"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -443,7 +444,7 @@ class RENDER_PT_stamp(RenderButtonsPanel, bpy.types.Panel):
sub.prop(rd, "stamp_note_text", text="")
-class RENDER_PT_output(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_output(RenderButtonsPanel, Panel):
bl_label = "Output"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -543,7 +544,7 @@ class RENDER_PT_output(RenderButtonsPanel, bpy.types.Panel):
col.prop(rd, "quicktime_audio_resampling_hq")
-class RENDER_PT_encoding(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_encoding(RenderButtonsPanel, Panel):
bl_label = "Encoding"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -599,7 +600,7 @@ class RENDER_PT_encoding(RenderButtonsPanel, bpy.types.Panel):
col.prop(rd, "ffmpeg_audio_volume", slider=True)
-class RENDER_PT_bake(RenderButtonsPanel, bpy.types.Panel):
+class RENDER_PT_bake(RenderButtonsPanel, Panel):
bl_label = "Bake"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py
index c3784b9f692..fd7fc8ed462 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Operator, Panel
from rna_prop_ui import PropertyPanel
@@ -31,7 +32,7 @@ class SceneButtonsPanel():
return context.scene
-class SCENE_PT_scene(SceneButtonsPanel, bpy.types.Panel):
+class SCENE_PT_scene(SceneButtonsPanel, Panel):
bl_label = "Scene"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -43,7 +44,7 @@ class SCENE_PT_scene(SceneButtonsPanel, bpy.types.Panel):
layout.prop(scene, "background_set", text="Background")
-class SCENE_PT_audio(SceneButtonsPanel, bpy.types.Panel):
+class SCENE_PT_audio(SceneButtonsPanel, Panel):
bl_label = "Audio"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -73,7 +74,7 @@ class SCENE_PT_audio(SceneButtonsPanel, bpy.types.Panel):
layout.operator("sound.mixdown")
-class SCENE_PT_unit(SceneButtonsPanel, bpy.types.Panel):
+class SCENE_PT_unit(SceneButtonsPanel, Panel):
bl_label = "Units"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -91,7 +92,7 @@ class SCENE_PT_unit(SceneButtonsPanel, bpy.types.Panel):
row.prop(unit, "use_separate")
-class SCENE_PT_keying_sets(SceneButtonsPanel, bpy.types.Panel):
+class SCENE_PT_keying_sets(SceneButtonsPanel, Panel):
bl_label = "Keying Sets"
def draw(self, context):
@@ -124,7 +125,7 @@ class SCENE_PT_keying_sets(SceneButtonsPanel, bpy.types.Panel):
col.prop(ks, "bl_options")
-class SCENE_PT_keying_set_paths(SceneButtonsPanel, bpy.types.Panel):
+class SCENE_PT_keying_set_paths(SceneButtonsPanel, Panel):
bl_label = "Active Keying Set"
@classmethod
@@ -174,7 +175,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel, bpy.types.Panel):
col.prop(ksp, "bl_options")
-class SCENE_PT_physics(SceneButtonsPanel, bpy.types.Panel):
+class SCENE_PT_physics(SceneButtonsPanel, Panel):
bl_label = "Gravity"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -191,7 +192,7 @@ class SCENE_PT_physics(SceneButtonsPanel, bpy.types.Panel):
layout.prop(scene, "gravity", text="")
-class SCENE_PT_simplify(SceneButtonsPanel, bpy.types.Panel):
+class SCENE_PT_simplify(SceneButtonsPanel, Panel):
bl_label = "Simplify"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -220,7 +221,7 @@ class SCENE_PT_simplify(SceneButtonsPanel, bpy.types.Panel):
col.prop(rd, "simplify_ao_sss", text="AO and SSS")
-class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, bpy.types.Panel):
+class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "scene"
_property_type = bpy.types.Scene
@@ -228,7 +229,7 @@ class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, bpy.types.Panel):
# XXX, move operator to op/ dir
-class ANIM_OT_keying_set_export(bpy.types.Operator):
+class ANIM_OT_keying_set_export(Operator):
"Export Keying Set to a python script."
bl_idname = "anim.keying_set_export"
bl_label = "Export Keying Set..."
diff --git a/release/scripts/startup/bl_ui/properties_texture.py b/release/scripts/startup/bl_ui/properties_texture.py
index 7ca8818cbd2..ead65b92c3f 100644
--- a/release/scripts/startup/bl_ui/properties_texture.py
+++ b/release/scripts/startup/bl_ui/properties_texture.py
@@ -18,10 +18,11 @@
# <pep8 compliant>
import bpy
+from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel
-class TEXTURE_MT_specials(bpy.types.Menu):
+class TEXTURE_MT_specials(Menu):
bl_label = "Texture Specials"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -32,7 +33,7 @@ class TEXTURE_MT_specials(bpy.types.Menu):
layout.operator("texture.slot_paste", icon='PASTEDOWN')
-class TEXTURE_MT_envmap_specials(bpy.types.Menu):
+class TEXTURE_MT_envmap_specials(Menu):
bl_label = "Environment Map Specials"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -80,7 +81,7 @@ class TextureButtonsPanel():
return tex and (tex.type != 'NONE' or tex.use_nodes) and (context.scene.render.engine in cls.COMPAT_ENGINES)
-class TEXTURE_PT_context_texture(TextureButtonsPanel, bpy.types.Panel):
+class TEXTURE_PT_context_texture(TextureButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -150,7 +151,7 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel, bpy.types.Panel):
split.prop(tex, "type", text="")
-class TEXTURE_PT_preview(TextureButtonsPanel, bpy.types.Panel):
+class TEXTURE_PT_preview(TextureButtonsPanel, Panel):
bl_label = "Preview"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -167,7 +168,7 @@ class TEXTURE_PT_preview(TextureButtonsPanel, bpy.types.Panel):
layout.template_preview(tex, slot=slot)
-class TEXTURE_PT_colors(TextureButtonsPanel, bpy.types.Panel):
+class TEXTURE_PT_colors(TextureButtonsPanel, Panel):
bl_label = "Colors"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -223,7 +224,7 @@ class TextureTypePanel(TextureButtonsPanel):
return tex and ((tex.type == cls.tex_type and not tex.use_nodes) and (engine in cls.COMPAT_ENGINES))
-class TEXTURE_PT_clouds(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_clouds(TextureTypePanel, Panel):
bl_label = "Clouds"
tex_type = 'CLOUDS'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -247,7 +248,7 @@ class TEXTURE_PT_clouds(TextureTypePanel, bpy.types.Panel):
split.prop(tex, "nabla", text="Nabla")
-class TEXTURE_PT_wood(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_wood(TextureTypePanel, Panel):
bl_label = "Wood"
tex_type = 'WOOD'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -276,7 +277,7 @@ class TEXTURE_PT_wood(TextureTypePanel, bpy.types.Panel):
split.prop(tex, "nabla")
-class TEXTURE_PT_marble(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_marble(TextureTypePanel, Panel):
bl_label = "Marble"
tex_type = 'MARBLE'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -303,7 +304,7 @@ class TEXTURE_PT_marble(TextureTypePanel, bpy.types.Panel):
col.prop(tex, "nabla")
-class TEXTURE_PT_magic(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_magic(TextureTypePanel, Panel):
bl_label = "Magic"
tex_type = 'MAGIC'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -318,7 +319,7 @@ class TEXTURE_PT_magic(TextureTypePanel, bpy.types.Panel):
row.prop(tex, "turbulence")
-class TEXTURE_PT_blend(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_blend(TextureTypePanel, Panel):
bl_label = "Blend"
tex_type = 'BLEND'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -336,7 +337,7 @@ class TEXTURE_PT_blend(TextureTypePanel, bpy.types.Panel):
sub.prop(tex, "use_flip_axis", expand=True)
-class TEXTURE_PT_stucci(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_stucci(TextureTypePanel, Panel):
bl_label = "Stucci"
tex_type = 'STUCCI'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -356,7 +357,7 @@ class TEXTURE_PT_stucci(TextureTypePanel, bpy.types.Panel):
row.prop(tex, "turbulence")
-class TEXTURE_PT_image(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_image(TextureTypePanel, Panel):
bl_label = "Image"
tex_type = 'IMAGE'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -382,7 +383,7 @@ def texture_filter_common(tex, layout):
layout.prop(tex, "use_filter_size_min")
-class TEXTURE_PT_image_sampling(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_image_sampling(TextureTypePanel, Panel):
bl_label = "Image Sampling"
bl_options = {'DEFAULT_CLOSED'}
tex_type = 'IMAGE'
@@ -423,7 +424,7 @@ class TEXTURE_PT_image_sampling(TextureTypePanel, bpy.types.Panel):
texture_filter_common(tex, col)
-class TEXTURE_PT_image_mapping(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_image_mapping(TextureTypePanel, Panel):
bl_label = "Image Mapping"
bl_options = {'DEFAULT_CLOSED'}
tex_type = 'IMAGE'
@@ -479,7 +480,7 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, bpy.types.Panel):
col.prop(tex, "crop_max_y", text="Y")
-class TEXTURE_PT_envmap(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_envmap(TextureTypePanel, Panel):
bl_label = "Environment Map"
tex_type = 'ENVIRONMENT_MAP'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -517,7 +518,7 @@ class TEXTURE_PT_envmap(TextureTypePanel, bpy.types.Panel):
col.prop(env, "clip_end", text="End")
-class TEXTURE_PT_envmap_sampling(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_envmap_sampling(TextureTypePanel, Panel):
bl_label = "Environment Map Sampling"
bl_options = {'DEFAULT_CLOSED'}
tex_type = 'ENVIRONMENT_MAP'
@@ -531,7 +532,7 @@ class TEXTURE_PT_envmap_sampling(TextureTypePanel, bpy.types.Panel):
texture_filter_common(tex, layout)
-class TEXTURE_PT_musgrave(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_musgrave(TextureTypePanel, Panel):
bl_label = "Musgrave"
tex_type = 'MUSGRAVE'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -568,7 +569,7 @@ class TEXTURE_PT_musgrave(TextureTypePanel, bpy.types.Panel):
row.prop(tex, "nabla")
-class TEXTURE_PT_voronoi(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_voronoi(TextureTypePanel, Panel):
bl_label = "Voronoi"
tex_type = 'VORONOI'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -604,7 +605,7 @@ class TEXTURE_PT_voronoi(TextureTypePanel, bpy.types.Panel):
row.prop(tex, "nabla")
-class TEXTURE_PT_distortednoise(TextureTypePanel, bpy.types.Panel):
+class TEXTURE_PT_distortednoise(TextureTypePanel, Panel):
bl_label = "Distorted Noise"
tex_type = 'DISTORTED_NOISE'
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -626,7 +627,7 @@ class TEXTURE_PT_distortednoise(TextureTypePanel, bpy.types.Panel):
split.prop(tex, "nabla")
-class TEXTURE_PT_voxeldata(TextureButtonsPanel, bpy.types.Panel):
+class TEXTURE_PT_voxeldata(TextureButtonsPanel, Panel):
bl_label = "Voxel Data"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -666,7 +667,7 @@ class TEXTURE_PT_voxeldata(TextureButtonsPanel, bpy.types.Panel):
layout.prop(vd, "intensity")
-class TEXTURE_PT_pointdensity(TextureButtonsPanel, bpy.types.Panel):
+class TEXTURE_PT_pointdensity(TextureButtonsPanel, Panel):
bl_label = "Point Density"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -732,7 +733,7 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel, bpy.types.Panel):
col.template_curve_mapping(pd, "falloff_curve", brush=False)
-class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, bpy.types.Panel):
+class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, Panel):
bl_label = "Turbulence"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -769,7 +770,7 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, bpy.types.Panel):
col.prop(pd, "turbulence_strength")
-class TEXTURE_PT_mapping(TextureSlotPanel, bpy.types.Panel):
+class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
bl_label = "Mapping"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -857,7 +858,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel, bpy.types.Panel):
row.column().prop(tex, "scale")
-class TEXTURE_PT_influence(TextureSlotPanel, bpy.types.Panel):
+class TEXTURE_PT_influence(TextureSlotPanel, Panel):
bl_label = "Influence"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -1033,7 +1034,7 @@ class TEXTURE_PT_influence(TextureSlotPanel, bpy.types.Panel):
sub.prop(tex, "bump_objectspace", text="Space")
-class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, bpy.types.Panel):
+class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "texture"
_property_type = bpy.types.Texture
diff --git a/release/scripts/startup/bl_ui/properties_world.py b/release/scripts/startup/bl_ui/properties_world.py
index c577af01374..71ee03296a0 100644
--- a/release/scripts/startup/bl_ui/properties_world.py
+++ b/release/scripts/startup/bl_ui/properties_world.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Panel
from rna_prop_ui import PropertyPanel
@@ -32,7 +33,7 @@ class WorldButtonsPanel():
return (context.world and context.scene.render.engine in cls.COMPAT_ENGINES)
-class WORLD_PT_context_world(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_context_world(WorldButtonsPanel, Panel):
bl_label = ""
bl_options = {'HIDE_HEADER'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -61,7 +62,7 @@ class WORLD_PT_context_world(WorldButtonsPanel, bpy.types.Panel):
split.label(text=str(texture_count), icon='TEXTURE')
-class WORLD_PT_preview(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_preview(WorldButtonsPanel, Panel):
bl_label = "Preview"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -74,7 +75,7 @@ class WORLD_PT_preview(WorldButtonsPanel, bpy.types.Panel):
self.layout.template_preview(context.world)
-class WORLD_PT_world(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_world(WorldButtonsPanel, Panel):
bl_label = "World"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -99,7 +100,7 @@ class WORLD_PT_world(WorldButtonsPanel, bpy.types.Panel):
row.prop(world, "color_range")
-class WORLD_PT_ambient_occlusion(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_ambient_occlusion(WorldButtonsPanel, Panel):
bl_label = "Ambient Occlusion"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -118,7 +119,7 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel, bpy.types.Panel):
split.prop(light, "ao_blend_type", text="")
-class WORLD_PT_environment_lighting(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_environment_lighting(WorldButtonsPanel, Panel):
bl_label = "Environment Lighting"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -137,7 +138,7 @@ class WORLD_PT_environment_lighting(WorldButtonsPanel, bpy.types.Panel):
split.prop(light, "environment_color", text="")
-class WORLD_PT_indirect_lighting(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_indirect_lighting(WorldButtonsPanel, Panel):
bl_label = "Indirect Lighting"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -159,7 +160,7 @@ class WORLD_PT_indirect_lighting(WorldButtonsPanel, bpy.types.Panel):
layout.label(text="Only works with Approximate gather method")
-class WORLD_PT_gather(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_gather(WorldButtonsPanel, Panel):
bl_label = "Gather"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -207,7 +208,7 @@ class WORLD_PT_gather(WorldButtonsPanel, bpy.types.Panel):
col.prop(light, "correction")
-class WORLD_PT_mist(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_mist(WorldButtonsPanel, Panel):
bl_label = "Mist"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -236,7 +237,7 @@ class WORLD_PT_mist(WorldButtonsPanel, bpy.types.Panel):
layout.prop(world.mist_settings, "falloff")
-class WORLD_PT_stars(WorldButtonsPanel, bpy.types.Panel):
+class WORLD_PT_stars(WorldButtonsPanel, Panel):
bl_label = "Stars"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -263,7 +264,7 @@ class WORLD_PT_stars(WorldButtonsPanel, bpy.types.Panel):
col.prop(world.star_settings, "average_separation", text="Separation")
-class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, bpy.types.Panel):
+class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
_context_path = "world"
_property_type = bpy.types.World
diff --git a/release/scripts/startup/bl_ui/space_console.py b/release/scripts/startup/bl_ui/space_console.py
index da6c102100b..d457a66def8 100644
--- a/release/scripts/startup/bl_ui/space_console.py
+++ b/release/scripts/startup/bl_ui/space_console.py
@@ -18,32 +18,30 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu, Operator
from bpy.props import StringProperty
-class CONSOLE_HT_header(bpy.types.Header):
+class CONSOLE_HT_header(Header):
bl_space_type = 'CONSOLE'
def draw(self, context):
- layout = self.layout
+ layout = self.layout.row(align=True)
- row = layout.row(align=True)
- row.template_header()
+ layout.template_header()
if context.area.show_menus:
- sub = row.row(align=True)
- sub.menu("CONSOLE_MT_console")
+ layout.menu("CONSOLE_MT_console")
- row = layout.row(align=True)
- row.operator("console.autocomplete", text="Autocomplete")
+ layout.operator("console.autocomplete", text="Autocomplete")
-class CONSOLE_MT_console(bpy.types.Menu):
+class CONSOLE_MT_console(Menu):
bl_label = "Console"
def draw(self, context):
layout = self.layout
- layout.column()
+
layout.operator("console.clear")
layout.operator("console.copy")
layout.operator("console.paste")
@@ -55,7 +53,7 @@ class CONSOLE_MT_console(bpy.types.Menu):
layout.operator("screen.screen_full_area")
-class CONSOLE_MT_language(bpy.types.Menu):
+class CONSOLE_MT_language(Menu):
bl_label = "Languages..."
def draw(self, context):
@@ -82,7 +80,7 @@ def add_scrollback(text, text_type):
type=text_type)
-class ConsoleExec(bpy.types.Operator):
+class ConsoleExec(Operator):
'''Execute the current console line as a python expression'''
bl_idname = "console.execute"
bl_label = "Console Execute"
@@ -100,7 +98,7 @@ class ConsoleExec(bpy.types.Operator):
return {'FINISHED'}
-class ConsoleAutocomplete(bpy.types.Operator):
+class ConsoleAutocomplete(Operator):
'''Evaluate the namespace up until the cursor and give a list of options or complete the name if there is only one'''
bl_idname = "console.autocomplete"
bl_label = "Console Autocomplete"
@@ -117,7 +115,7 @@ class ConsoleAutocomplete(bpy.types.Operator):
return {'FINISHED'}
-class ConsoleBanner(bpy.types.Operator):
+class ConsoleBanner(Operator):
'''Print a message whem the terminal initializes'''
bl_idname = "console.banner"
bl_label = "Console Banner"
@@ -139,7 +137,7 @@ class ConsoleBanner(bpy.types.Operator):
return {'FINISHED'}
-class ConsoleLanguage(bpy.types.Operator):
+class ConsoleLanguage(Operator):
'''Set the current language for this console'''
bl_idname = "console.language"
bl_label = "Console Language"
diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py
index 646a085f3f7..cab58a3aadb 100644
--- a/release/scripts/startup/bl_ui/space_dopesheet.py
+++ b/release/scripts/startup/bl_ui/space_dopesheet.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu
#######################################
@@ -93,7 +94,7 @@ def dopesheet_filter(layout, context, genericFiltersOnly=False):
#######################################
# DopeSheet Editor - General/Standard UI
-class DOPESHEET_HT_header(bpy.types.Header):
+class DOPESHEET_HT_header(Header):
bl_space_type = 'DOPESHEET_EDITOR'
def draw(self, context):
@@ -105,21 +106,19 @@ class DOPESHEET_HT_header(bpy.types.Header):
row.template_header()
if context.area.show_menus:
- sub = row.row(align=True)
-
- sub.menu("DOPESHEET_MT_view")
- sub.menu("DOPESHEET_MT_select")
- sub.menu("DOPESHEET_MT_marker")
+ row.menu("DOPESHEET_MT_view")
+ row.menu("DOPESHEET_MT_select")
+ row.menu("DOPESHEET_MT_marker")
if st.mode == 'DOPESHEET' or (st.mode == 'ACTION' and st.action != None):
- sub.menu("DOPESHEET_MT_channel")
+ row.menu("DOPESHEET_MT_channel")
elif st.mode == 'GPENCIL':
- sub.menu("DOPESHEET_MT_gpencil_channel")
+ row.menu("DOPESHEET_MT_gpencil_channel")
if st.mode != 'GPENCIL':
- sub.menu("DOPESHEET_MT_key")
+ row.menu("DOPESHEET_MT_key")
else:
- sub.menu("DOPESHEET_MT_gpencil_frame")
+ row.menu("DOPESHEET_MT_gpencil_frame")
layout.prop(st, "mode", text="")
layout.prop(st.dopesheet, "show_summary", text="Summary")
@@ -143,7 +142,7 @@ class DOPESHEET_HT_header(bpy.types.Header):
row.operator("action.paste", text="", icon='PASTEDOWN')
-class DOPESHEET_MT_view(bpy.types.Menu):
+class DOPESHEET_MT_view(Menu):
bl_label = "View"
def draw(self, context):
@@ -151,8 +150,6 @@ class DOPESHEET_MT_view(bpy.types.Menu):
st = context.space_data
- layout.column()
-
layout.prop(st, "use_realtime_update")
layout.prop(st, "show_frame_indicator")
layout.prop(st, "show_sliders")
@@ -179,13 +176,12 @@ class DOPESHEET_MT_view(bpy.types.Menu):
layout.operator("screen.screen_full_area")
-class DOPESHEET_MT_select(bpy.types.Menu):
+class DOPESHEET_MT_select(Menu):
bl_label = "Select"
def draw(self, context):
layout = self.layout
- layout.column()
# This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None
layout.operator("action.select_all_toggle")
layout.operator("action.select_all_toggle", text="Invert Selection").invert = True
@@ -215,7 +211,7 @@ class DOPESHEET_MT_select(bpy.types.Menu):
layout.operator("action.select_linked")
-class DOPESHEET_MT_marker(bpy.types.Menu):
+class DOPESHEET_MT_marker(Menu):
bl_label = "Marker"
def draw(self, context):
@@ -225,7 +221,6 @@ class DOPESHEET_MT_marker(bpy.types.Menu):
#layout.operator_context = 'EXEC_REGION_WIN'
- layout.column()
layout.operator("marker.add", "Add Marker")
layout.operator("marker.duplicate", text="Duplicate Marker")
layout.operator("marker.delete", text="Delete Marker")
@@ -246,7 +241,7 @@ class DOPESHEET_MT_marker(bpy.types.Menu):
#######################################
# Keyframe Editing
-class DOPESHEET_MT_channel(bpy.types.Menu):
+class DOPESHEET_MT_channel(Menu):
bl_label = "Channel"
def draw(self, context):
@@ -254,7 +249,6 @@ class DOPESHEET_MT_channel(bpy.types.Menu):
layout.operator_context = 'INVOKE_REGION_CHANNELS'
- layout.column()
layout.operator("anim.channels_delete")
layout.separator()
@@ -277,13 +271,12 @@ class DOPESHEET_MT_channel(bpy.types.Menu):
layout.operator("anim.channels_fcurves_enable")
-class DOPESHEET_MT_key(bpy.types.Menu):
+class DOPESHEET_MT_key(Menu):
bl_label = "Key"
def draw(self, context):
layout = self.layout
- layout.column()
layout.menu("DOPESHEET_MT_key_transform", text="Transform")
layout.operator_menu_enum("action.snap", "type", text="Snap")
@@ -310,13 +303,12 @@ class DOPESHEET_MT_key(bpy.types.Menu):
layout.operator("action.paste")
-class DOPESHEET_MT_key_transform(bpy.types.Menu):
+class DOPESHEET_MT_key_transform(Menu):
bl_label = "Transform"
def draw(self, context):
layout = self.layout
- layout.column()
layout.operator("transform.transform", text="Grab/Move").mode = 'TIME_TRANSLATE'
layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND'
layout.operator("transform.transform", text="Slide").mode = 'TIME_SLIDE'
@@ -326,7 +318,7 @@ class DOPESHEET_MT_key_transform(bpy.types.Menu):
#######################################
# Grease Pencil Editing
-class DOPESHEET_MT_gpencil_channel(bpy.types.Menu):
+class DOPESHEET_MT_gpencil_channel(Menu):
bl_label = "Channel"
def draw(self, context):
@@ -334,7 +326,6 @@ class DOPESHEET_MT_gpencil_channel(bpy.types.Menu):
layout.operator_context = 'INVOKE_REGION_CHANNELS'
- layout.column()
layout.operator("anim.channels_delete")
layout.separator()
@@ -354,13 +345,12 @@ class DOPESHEET_MT_gpencil_channel(bpy.types.Menu):
#layout.operator_menu_enum("anim.channels_move", "direction", text="Move...")
-class DOPESHEET_MT_gpencil_frame(bpy.types.Menu):
+class DOPESHEET_MT_gpencil_frame(Menu):
bl_label = "Frame"
def draw(self, context):
layout = self.layout
- layout.column()
layout.menu("DOPESHEET_MT_key_transform", text="Transform")
#layout.operator_menu_enum("action.snap", "type", text="Snap")
diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py b/release/scripts/startup/bl_ui/space_filebrowser.py
index 73fe1a97252..cf0d10c5844 100644
--- a/release/scripts/startup/bl_ui/space_filebrowser.py
+++ b/release/scripts/startup/bl_ui/space_filebrowser.py
@@ -18,9 +18,10 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header
-class FILEBROWSER_HT_header(bpy.types.Header):
+class FILEBROWSER_HT_header(Header):
bl_space_type = 'FILE_BROWSER'
def draw(self, context):
diff --git a/release/scripts/startup/bl_ui/space_graph.py b/release/scripts/startup/bl_ui/space_graph.py
index 31b5168eb92..d4b8c415a7f 100644
--- a/release/scripts/startup/bl_ui/space_graph.py
+++ b/release/scripts/startup/bl_ui/space_graph.py
@@ -19,9 +19,10 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu
-class GRAPH_HT_header(bpy.types.Header):
+class GRAPH_HT_header(Header):
bl_space_type = 'GRAPH_EDITOR'
def draw(self, context):
@@ -35,13 +36,11 @@ class GRAPH_HT_header(bpy.types.Header):
row.template_header()
if context.area.show_menus:
- sub = row.row(align=True)
-
- sub.menu("GRAPH_MT_view")
- sub.menu("GRAPH_MT_select")
- sub.menu("GRAPH_MT_marker")
- sub.menu("GRAPH_MT_channel")
- sub.menu("GRAPH_MT_key")
+ row.menu("GRAPH_MT_view")
+ row.menu("GRAPH_MT_select")
+ row.menu("GRAPH_MT_marker")
+ row.menu("GRAPH_MT_channel")
+ row.menu("GRAPH_MT_key")
layout.prop(st, "mode", text="")
@@ -61,7 +60,7 @@ class GRAPH_HT_header(bpy.types.Header):
row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')
-class GRAPH_MT_view(bpy.types.Menu):
+class GRAPH_MT_view(Menu):
bl_label = "View"
def draw(self, context):
@@ -69,8 +68,6 @@ class GRAPH_MT_view(bpy.types.Menu):
st = context.space_data
- layout.column()
-
layout.operator("graph.properties", icon='MENU_PANEL')
layout.separator()
@@ -107,13 +104,12 @@ class GRAPH_MT_view(bpy.types.Menu):
layout.operator("screen.screen_full_area")
-class GRAPH_MT_select(bpy.types.Menu):
+class GRAPH_MT_select(Menu):
bl_label = "Select"
def draw(self, context):
layout = self.layout
- layout.column()
# This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None
layout.operator("graph.select_all_toggle")
layout.operator("graph.select_all_toggle", text="Invert Selection").invert = True
@@ -142,7 +138,7 @@ class GRAPH_MT_select(bpy.types.Menu):
layout.operator("graph.select_linked")
-class GRAPH_MT_marker(bpy.types.Menu):
+class GRAPH_MT_marker(Menu):
bl_label = "Marker"
def draw(self, context):
@@ -150,7 +146,6 @@ class GRAPH_MT_marker(bpy.types.Menu):
#layout.operator_context = 'EXEC_REGION_WIN'
- layout.column()
layout.operator("marker.add", "Add Marker")
layout.operator("marker.duplicate", text="Duplicate Marker")
layout.operator("marker.delete", text="Delete Marker")
@@ -163,7 +158,7 @@ class GRAPH_MT_marker(bpy.types.Menu):
# TODO: pose markers for action edit mode only?
-class GRAPH_MT_channel(bpy.types.Menu):
+class GRAPH_MT_channel(Menu):
bl_label = "Channel"
def draw(self, context):
@@ -171,7 +166,6 @@ class GRAPH_MT_channel(bpy.types.Menu):
layout.operator_context = 'INVOKE_REGION_CHANNELS'
- layout.column()
layout.operator("anim.channels_delete")
layout.separator()
@@ -195,13 +189,12 @@ class GRAPH_MT_channel(bpy.types.Menu):
layout.operator("anim.channels_fcurves_enable")
-class GRAPH_MT_key(bpy.types.Menu):
+class GRAPH_MT_key(Menu):
bl_label = "Key"
def draw(self, context):
layout = self.layout
- layout.column()
layout.menu("GRAPH_MT_key_transform", text="Transform")
layout.operator_menu_enum("graph.snap", "type", text="Snap")
@@ -234,13 +227,12 @@ class GRAPH_MT_key(bpy.types.Menu):
layout.operator("graph.euler_filter", text="Discontinuity (Euler) Filter")
-class GRAPH_MT_key_transform(bpy.types.Menu):
+class GRAPH_MT_key_transform(Menu):
bl_label = "Transform"
def draw(self, context):
layout = self.layout
- layout.column()
layout.operator("transform.translate", text="Grab/Move")
layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND'
layout.operator("transform.rotate", text="Rotate")
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index fa5579ea2e0..5d72482ce9c 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu, Panel
class BrushButtonsPanel():
@@ -31,7 +32,7 @@ class BrushButtonsPanel():
return sima.show_paint and toolsettings.brush
-class IMAGE_MT_view(bpy.types.Menu):
+class IMAGE_MT_view(Menu):
bl_label = "View"
def draw(self, context):
@@ -79,7 +80,7 @@ class IMAGE_MT_view(bpy.types.Menu):
layout.operator("screen.screen_full_area")
-class IMAGE_MT_select(bpy.types.Menu):
+class IMAGE_MT_select(Menu):
bl_label = "Select"
def draw(self, context):
@@ -100,7 +101,7 @@ class IMAGE_MT_select(bpy.types.Menu):
layout.operator("uv.select_linked")
-class IMAGE_MT_image(bpy.types.Menu):
+class IMAGE_MT_image(Menu):
bl_label = "Image"
def draw(self, context):
@@ -151,7 +152,7 @@ class IMAGE_MT_image(bpy.types.Menu):
layout.prop(sima, "use_image_paint")
-class IMAGE_MT_image_invert(bpy.types.Menu):
+class IMAGE_MT_image_invert(Menu):
bl_label = "Invert"
def draw(self, context):
@@ -177,7 +178,7 @@ class IMAGE_MT_image_invert(bpy.types.Menu):
op.invert_a = True
-class IMAGE_MT_uvs_showhide(bpy.types.Menu):
+class IMAGE_MT_uvs_showhide(Menu):
bl_label = "Show/Hide Faces"
def draw(self, context):
@@ -188,7 +189,7 @@ class IMAGE_MT_uvs_showhide(bpy.types.Menu):
layout.operator("uv.hide", text="Hide Unselected").unselected = True
-class IMAGE_MT_uvs_transform(bpy.types.Menu):
+class IMAGE_MT_uvs_transform(Menu):
bl_label = "Transform"
def draw(self, context):
@@ -203,7 +204,7 @@ class IMAGE_MT_uvs_transform(bpy.types.Menu):
layout.operator("transform.shear")
-class IMAGE_MT_uvs_snap(bpy.types.Menu):
+class IMAGE_MT_uvs_snap(Menu):
bl_label = "Snap"
def draw(self, context):
@@ -220,7 +221,7 @@ class IMAGE_MT_uvs_snap(bpy.types.Menu):
layout.operator("uv.snap_cursor", text="Cursor to Selected").target = 'SELECTED'
-class IMAGE_MT_uvs_mirror(bpy.types.Menu):
+class IMAGE_MT_uvs_mirror(Menu):
bl_label = "Mirror"
def draw(self, context):
@@ -231,7 +232,7 @@ class IMAGE_MT_uvs_mirror(bpy.types.Menu):
layout.operator("transform.mirror", text="Y Axis").constraint_axis[1] = True
-class IMAGE_MT_uvs_weldalign(bpy.types.Menu):
+class IMAGE_MT_uvs_weldalign(Menu):
bl_label = "Weld/Align"
def draw(self, context):
@@ -241,7 +242,7 @@ class IMAGE_MT_uvs_weldalign(bpy.types.Menu):
layout.operator_enum("uv.align", "axis") # W, 2/3/4
-class IMAGE_MT_uvs(bpy.types.Menu):
+class IMAGE_MT_uvs(Menu):
bl_label = "UVs"
def draw(self, context):
@@ -286,7 +287,7 @@ class IMAGE_MT_uvs(bpy.types.Menu):
layout.menu("IMAGE_MT_uvs_showhide")
-class IMAGE_MT_uvs_select_mode(bpy.types.Menu):
+class IMAGE_MT_uvs_select_mode(Menu):
bl_label = "UV Select Mode"
def draw(self, context):
@@ -328,7 +329,7 @@ class IMAGE_MT_uvs_select_mode(bpy.types.Menu):
prop.data_path = "tool_settings.uv_select_mode"
-class IMAGE_HT_header(bpy.types.Header):
+class IMAGE_HT_header(Header):
bl_space_type = 'IMAGE_EDITOR'
def draw(self, context):
@@ -412,7 +413,7 @@ class IMAGE_HT_header(bpy.types.Header):
layout.prop(sima, "use_realtime_update", text="", icon_only=True, icon='LOCKED')
-class IMAGE_PT_image_properties(bpy.types.Panel):
+class IMAGE_PT_image_properties(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'UI'
bl_label = "Image"
@@ -431,7 +432,7 @@ class IMAGE_PT_image_properties(bpy.types.Panel):
layout.template_image(sima, "image", iuser)
-class IMAGE_PT_game_properties(bpy.types.Panel):
+class IMAGE_PT_game_properties(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'UI'
bl_label = "Game Properties"
@@ -451,15 +452,13 @@ class IMAGE_PT_game_properties(bpy.types.Panel):
split = layout.split()
col = split.column()
-
+
+ col.prop(ima, "use_animation")
sub = col.column(align=True)
- sub.prop(ima, "use_animation")
-
- subsub = sub.column()
- subsub.active = ima.use_animation
- subsub.prop(ima, "frame_start", text="Start")
- subsub.prop(ima, "frame_end", text="End")
- subsub.prop(ima, "fps", text="Speed")
+ sub.active = ima.use_animation
+ sub.prop(ima, "frame_start", text="Start")
+ sub.prop(ima, "frame_end", text="End")
+ sub.prop(ima, "fps", text="Speed")
col.prop(ima, "use_tiles")
sub = col.column(align=True)
@@ -475,7 +474,7 @@ class IMAGE_PT_game_properties(bpy.types.Panel):
col.prop(ima, "mapping", expand=True)
-class IMAGE_PT_view_histogram(bpy.types.Panel):
+class IMAGE_PT_view_histogram(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'PREVIEW'
bl_label = "Histogram"
@@ -494,7 +493,7 @@ class IMAGE_PT_view_histogram(bpy.types.Panel):
layout.prop(sima.scopes.histogram, "mode", icon_only=True)
-class IMAGE_PT_view_waveform(bpy.types.Panel):
+class IMAGE_PT_view_waveform(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'PREVIEW'
bl_label = "Waveform"
@@ -508,13 +507,14 @@ class IMAGE_PT_view_waveform(bpy.types.Panel):
layout = self.layout
sima = context.space_data
+
layout.template_waveform(sima, "scopes")
- sub = layout.row().split(percentage=0.75)
- sub.prop(sima.scopes, "waveform_alpha")
- sub.prop(sima.scopes, "waveform_mode", text="", icon_only=True)
+ row = layout.split(percentage=0.75)
+ row.prop(sima.scopes, "waveform_alpha")
+ row.prop(sima.scopes, "waveform_mode", text="", icon_only=True)
-class IMAGE_PT_view_vectorscope(bpy.types.Panel):
+class IMAGE_PT_view_vectorscope(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'PREVIEW'
bl_label = "Vectorscope"
@@ -532,7 +532,7 @@ class IMAGE_PT_view_vectorscope(bpy.types.Panel):
layout.prop(sima.scopes, "vectorscope_alpha")
-class IMAGE_PT_sample_line(bpy.types.Panel):
+class IMAGE_PT_sample_line(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'PREVIEW'
bl_label = "Sample Line"
@@ -544,13 +544,15 @@ class IMAGE_PT_sample_line(bpy.types.Panel):
def draw(self, context):
layout = self.layout
- layout.operator("image.sample_line")
+
sima = context.space_data
+
+ layout.operator("image.sample_line")
layout.template_histogram(sima, "sample_histogram")
layout.prop(sima.sample_histogram, "mode")
-class IMAGE_PT_scope_sample(bpy.types.Panel):
+class IMAGE_PT_scope_sample(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'PREVIEW'
bl_label = "Scope Samples"
@@ -562,16 +564,17 @@ class IMAGE_PT_scope_sample(bpy.types.Panel):
def draw(self, context):
layout = self.layout
+
sima = context.space_data
- split = layout.split()
- row = split.row()
+
+ row = layout.row()
row.prop(sima.scopes, "use_full_resolution")
- row = split.row()
- row.active = not sima.scopes.use_full_resolution
- row.prop(sima.scopes, "accuracy")
+ sub = row.row()
+ sub.active = not sima.scopes.use_full_resolution
+ sub.prop(sima.scopes, "accuracy")
-class IMAGE_PT_view_properties(bpy.types.Panel):
+class IMAGE_PT_view_properties(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'UI'
bl_label = "Display"
@@ -608,16 +611,16 @@ class IMAGE_PT_view_properties(bpy.types.Panel):
if show_uvedit:
col = layout.column()
- col.label("Cursor Location")
- row = col.row()
- row.prop(uvedit, "cursor_location", text="")
-
- col = layout.column()
+ col.label("Cursor Location:")
+ col.row().prop(uvedit, "cursor_location", text="")
+
+ col.separator()
+
col.label(text="UVs:")
- row = col.row()
- row.prop(uvedit, "edge_draw_type", expand=True)
+ col.row().prop(uvedit, "edge_draw_type", expand=True)
split = layout.split()
+
col = split.column()
col.prop(uvedit, "show_faces")
col.prop(uvedit, "show_smooth_edges", text="Smooth")
@@ -630,7 +633,7 @@ class IMAGE_PT_view_properties(bpy.types.Panel):
sub.row().prop(uvedit, "draw_stretch_type", expand=True)
-class IMAGE_PT_paint(bpy.types.Panel):
+class IMAGE_PT_paint(Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'UI'
bl_label = "Paint"
@@ -646,9 +649,8 @@ class IMAGE_PT_paint(bpy.types.Panel):
toolsettings = context.tool_settings.image_paint
brush = toolsettings.brush
- col = layout.split().column()
- row = col.row()
- col.template_ID_preview(toolsettings, "brush", new="brush.add", rows=3, cols=8)
+ col = layout.column()
+ col.template_ID_preview(toolsettings, "brush", new="brush.add", rows=2, cols=6)
if brush:
col = layout.column()
@@ -675,7 +677,7 @@ class IMAGE_PT_paint(bpy.types.Panel):
col.prop(brush, "clone_alpha", text="Alpha")
-class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, bpy.types.Panel):
+class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, Panel):
bl_label = "Texture"
bl_options = {'DEFAULT_CLOSED'}
@@ -690,7 +692,7 @@ class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, bpy.types.Panel):
col.prop(brush, "use_fixed_texture")
-class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, bpy.types.Panel):
+class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, Panel):
bl_label = "Tool"
bl_options = {'DEFAULT_CLOSED'}
@@ -699,9 +701,7 @@ class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, bpy.types.Panel):
settings = context.tool_settings.image_paint
brush = settings.brush
- col = layout.column(align=True)
-
- col.prop(brush, "image_tool", expand=False, text="")
+ layout.prop(brush, "image_tool", text="")
row = layout.row(align=True)
row.prop(brush, "use_paint_sculpt", text="", icon='SCULPTMODE_HLT')
@@ -710,7 +710,7 @@ class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, bpy.types.Panel):
row.prop(brush, "use_paint_image", text="", icon='TPAINT_HLT')
-class IMAGE_PT_paint_stroke(BrushButtonsPanel, bpy.types.Panel):
+class IMAGE_PT_paint_stroke(BrushButtonsPanel, Panel):
bl_label = "Paint Stroke"
bl_options = {'DEFAULT_CLOSED'}
@@ -721,9 +721,9 @@ class IMAGE_PT_paint_stroke(BrushButtonsPanel, bpy.types.Panel):
brush = toolsettings.brush
layout.prop(brush, "use_airbrush")
- col = layout.column()
- col.active = brush.use_airbrush
- col.prop(brush, "rate", slider=True)
+ row = layout.row()
+ row.active = brush.use_airbrush
+ row.prop(brush, "rate", slider=True)
layout.prop(brush, "use_space")
row = layout.row(align=True)
@@ -734,7 +734,7 @@ class IMAGE_PT_paint_stroke(BrushButtonsPanel, bpy.types.Panel):
layout.prop(brush, "use_wrap")
-class IMAGE_PT_paint_curve(BrushButtonsPanel, bpy.types.Panel):
+class IMAGE_PT_paint_curve(BrushButtonsPanel, Panel):
bl_label = "Paint Curve"
bl_options = {'DEFAULT_CLOSED'}
diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py
index a2827fdbdb9..28990328c46 100644
--- a/release/scripts/startup/bl_ui/space_info.py
+++ b/release/scripts/startup/bl_ui/space_info.py
@@ -18,9 +18,10 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu, Operator
-class INFO_HT_header(bpy.types.Header):
+class INFO_HT_header(Header):
bl_space_type = 'INFO'
def draw(self, context):
@@ -86,19 +87,19 @@ class INFO_HT_header(bpy.types.Header):
"""
-class INFO_MT_report(bpy.types.Menu):
+class INFO_MT_report(Menu):
bl_label = "Report"
def draw(self, context):
layout = self.layout
- layout.column()
+
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(bpy.types.Menu):
+class INFO_MT_file(Menu):
bl_label = "File"
def draw(self, context):
@@ -152,7 +153,7 @@ class INFO_MT_file(bpy.types.Menu):
layout.operator("wm.quit_blender", text="Quit", icon='QUIT')
-class INFO_MT_file_import(bpy.types.Menu):
+class INFO_MT_file_import(Menu):
bl_idname = "INFO_MT_file_import"
bl_label = "Import"
@@ -161,7 +162,7 @@ class INFO_MT_file_import(bpy.types.Menu):
self.layout.operator("wm.collada_import", text="COLLADA (.dae)")
-class INFO_MT_file_export(bpy.types.Menu):
+class INFO_MT_file_export(Menu):
bl_idname = "INFO_MT_file_export"
bl_label = "Export"
@@ -170,7 +171,7 @@ class INFO_MT_file_export(bpy.types.Menu):
self.layout.operator("wm.collada_export", text="COLLADA (.dae)")
-class INFO_MT_file_external_data(bpy.types.Menu):
+class INFO_MT_file_external_data(Menu):
bl_label = "External Data"
def draw(self, context):
@@ -187,12 +188,13 @@ class INFO_MT_file_external_data(bpy.types.Menu):
layout.operator("file.find_missing_files")
-class INFO_MT_mesh_add(bpy.types.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")
@@ -207,12 +209,13 @@ class INFO_MT_mesh_add(bpy.types.Menu):
layout.operator("mesh.primitive_torus_add", text="Torus", icon='MESH_TORUS')
-class INFO_MT_curve_add(bpy.types.Menu):
+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")
@@ -221,7 +224,7 @@ class INFO_MT_curve_add(bpy.types.Menu):
layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path")
-class INFO_MT_edit_curve_add(bpy.types.Menu):
+class INFO_MT_edit_curve_add(Menu):
bl_idname = "INFO_MT_edit_curve_add"
bl_label = "Add"
@@ -237,12 +240,13 @@ class INFO_MT_edit_curve_add(bpy.types.Menu):
INFO_MT_curve_add.draw(self, context)
-class INFO_MT_surface_add(bpy.types.Menu):
+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")
@@ -252,17 +256,18 @@ class INFO_MT_surface_add(bpy.types.Menu):
layout.operator("surface.primitive_nurbs_surface_torus_add", icon='SURFACE_NTORUS', text="NURBS Torus")
-class INFO_MT_armature_add(bpy.types.Menu):
+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 = 'INVOKE_REGION_WIN'
layout.operator("object.armature_add", text="Single Bone", icon='BONE_DATA')
-class INFO_MT_add(bpy.types.Menu):
+class INFO_MT_add(Menu):
bl_label = "Add"
def draw(self, context):
@@ -305,7 +310,7 @@ class INFO_MT_add(bpy.types.Menu):
layout.operator_menu_enum("object.group_instance_add", "group", text="Group Instance", icon='OUTLINER_OB_EMPTY')
-class INFO_MT_game(bpy.types.Menu):
+class INFO_MT_game(Menu):
bl_label = "Game"
def draw(self, context):
@@ -326,7 +331,7 @@ class INFO_MT_game(bpy.types.Menu):
layout.prop(gs, "use_auto_start")
-class INFO_MT_render(bpy.types.Menu):
+class INFO_MT_render(Menu):
bl_label = "Render"
def draw(self, context):
@@ -346,7 +351,7 @@ class INFO_MT_render(bpy.types.Menu):
layout.operator("render.play_rendered_anim")
-class INFO_MT_help(bpy.types.Menu):
+class INFO_MT_help(Menu):
bl_label = "Help"
def draw(self, context):
@@ -382,7 +387,7 @@ class INFO_MT_help(bpy.types.Menu):
# Help operators
-class HELP_OT_operator_cheat_sheet(bpy.types.Operator):
+class HELP_OT_operator_cheat_sheet(Operator):
bl_idname = "help.operator_cheat_sheet"
bl_label = "Operator Cheat Sheet"
diff --git a/release/scripts/startup/bl_ui/space_logic.py b/release/scripts/startup/bl_ui/space_logic.py
index 7f7aba71a46..869a91124d3 100644
--- a/release/scripts/startup/bl_ui/space_logic.py
+++ b/release/scripts/startup/bl_ui/space_logic.py
@@ -18,9 +18,10 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu, Panel
-class LOGIC_PT_properties(bpy.types.Panel):
+class LOGIC_PT_properties(Panel):
bl_space_type = 'LOGIC_EDITOR'
bl_region_type = 'UI'
bl_label = "Properties"
@@ -49,7 +50,7 @@ class LOGIC_PT_properties(bpy.types.Panel):
row.operator("object.game_property_remove", text="", icon='X', emboss=False).index = i
-class LOGIC_MT_logicbricks_add(bpy.types.Menu):
+class LOGIC_MT_logicbricks_add(Menu):
bl_label = "Add"
def draw(self, context):
@@ -60,30 +61,24 @@ class LOGIC_MT_logicbricks_add(bpy.types.Menu):
layout.operator_menu_enum("logic.actuator_add", "type", text="Actuator")
-class LOGIC_HT_header(bpy.types.Header):
+class LOGIC_HT_header(Header):
bl_space_type = 'LOGIC_EDITOR'
def draw(self, context):
- layout = self.layout
+ layout = self.layout.row(align=True)
- row = layout.row(align=True)
- row.template_header()
+ layout.template_header()
if context.area.show_menus:
- sub = row.row(align=True)
- sub.menu("LOGIC_MT_view")
- #sub.menu("LOGIC_MT_select")
- #sub.menu("LOGIC_MT_add")
+ layout.menu("LOGIC_MT_view")
-class LOGIC_MT_view(bpy.types.Menu):
+class LOGIC_MT_view(Menu):
bl_label = "View"
def draw(self, context):
layout = self.layout
- layout.column()
-
layout.operator("logic.properties", icon='MENU_PANEL')
if __name__ == "__main__": # only for live edit.
diff --git a/release/scripts/startup/bl_ui/space_nla.py b/release/scripts/startup/bl_ui/space_nla.py
index b6c2d078960..1d4b7c6828f 100644
--- a/release/scripts/startup/bl_ui/space_nla.py
+++ b/release/scripts/startup/bl_ui/space_nla.py
@@ -19,9 +19,10 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu
-class NLA_HT_header(bpy.types.Header):
+class NLA_HT_header(Header):
bl_space_type = 'NLA_EDITOR'
def draw(self, context):
@@ -35,20 +36,18 @@ class NLA_HT_header(bpy.types.Header):
row.template_header()
if context.area.show_menus:
- sub = row.row(align=True)
-
- sub.menu("NLA_MT_view")
- sub.menu("NLA_MT_select")
- sub.menu("NLA_MT_marker")
- sub.menu("NLA_MT_edit")
- sub.menu("NLA_MT_add")
+ row.menu("NLA_MT_view")
+ row.menu("NLA_MT_select")
+ row.menu("NLA_MT_marker")
+ row.menu("NLA_MT_edit")
+ row.menu("NLA_MT_add")
dopesheet_filter(layout, context)
layout.prop(st, "auto_snap", text="")
-class NLA_MT_view(bpy.types.Menu):
+class NLA_MT_view(Menu):
bl_label = "View"
def draw(self, context):
@@ -56,8 +55,6 @@ class NLA_MT_view(bpy.types.Menu):
st = context.space_data
- layout.column()
-
layout.operator("nla.properties", icon='MENU_PANEL')
layout.separator()
@@ -82,13 +79,12 @@ class NLA_MT_view(bpy.types.Menu):
layout.operator("screen.screen_full_area")
-class NLA_MT_select(bpy.types.Menu):
+class NLA_MT_select(Menu):
bl_label = "Select"
def draw(self, context):
layout = self.layout
- layout.column()
# This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None
layout.operator("nla.select_all_toggle")
layout.operator("nla.select_all_toggle", text="Invert Selection").invert = True
@@ -102,7 +98,7 @@ class NLA_MT_select(bpy.types.Menu):
layout.operator("nla.select_leftright", text="After Current Frame").mode = 'RIGHT'
-class NLA_MT_marker(bpy.types.Menu):
+class NLA_MT_marker(Menu):
bl_label = "Marker"
def draw(self, context):
@@ -110,7 +106,6 @@ class NLA_MT_marker(bpy.types.Menu):
#layout.operator_context = 'EXEC_REGION_WIN'
- layout.column()
layout.operator("marker.add", "Add Marker")
layout.operator("marker.duplicate", text="Duplicate Marker")
layout.operator("marker.delete", text="Delete Marker")
@@ -121,7 +116,7 @@ class NLA_MT_marker(bpy.types.Menu):
layout.operator("marker.move", text="Grab/Move Marker")
-class NLA_MT_edit(bpy.types.Menu):
+class NLA_MT_edit(Menu):
bl_label = "Edit"
def draw(self, context):
@@ -129,7 +124,6 @@ class NLA_MT_edit(bpy.types.Menu):
scene = context.scene
- layout.column()
layout.menu("NLA_MT_edit_transform", text="Transform")
layout.operator_menu_enum("nla.snap", "type", text="Snap")
@@ -164,13 +158,12 @@ class NLA_MT_edit(bpy.types.Menu):
layout.operator("nla.tweakmode_enter", text="Start Tweaking Strip Actions")
-class NLA_MT_add(bpy.types.Menu):
+class NLA_MT_add(Menu):
bl_label = "Add"
def draw(self, context):
layout = self.layout
- layout.column()
layout.operator("nla.actionclip_add")
layout.operator("nla.transition_add")
layout.operator("nla.soundclip_add")
@@ -184,13 +177,12 @@ class NLA_MT_add(bpy.types.Menu):
layout.operator("nla.tracks_add", text="Add Tracks Above Selected").above_selected = True
-class NLA_MT_edit_transform(bpy.types.Menu):
+class NLA_MT_edit_transform(Menu):
bl_label = "Transform"
def draw(self, context):
layout = self.layout
- layout.column()
layout.operator("transform.translate", text="Grab/Move")
layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND'
layout.operator("transform.transform", text="Scale").mode = 'TIME_SCALE'
diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py
index 2088d8798f2..708017ba749 100644
--- a/release/scripts/startup/bl_ui/space_node.py
+++ b/release/scripts/startup/bl_ui/space_node.py
@@ -18,42 +18,39 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu, Panel
-class NODE_HT_header(bpy.types.Header):
+class NODE_HT_header(Header):
bl_space_type = 'NODE_EDITOR'
def draw(self, context):
layout = self.layout
snode = context.space_data
+ snode_id = snode.id
+ id_from = snode.id_from
row = layout.row(align=True)
row.template_header()
if context.area.show_menus:
- sub = row.row(align=True)
- sub.menu("NODE_MT_view")
- sub.menu("NODE_MT_select")
- sub.menu("NODE_MT_add")
- sub.menu("NODE_MT_node")
+ row.menu("NODE_MT_view")
+ row.menu("NODE_MT_select")
+ row.menu("NODE_MT_add")
+ row.menu("NODE_MT_node")
- row = layout.row()
- row.prop(snode, "tree_type", text="", expand=True)
+ layout.prop(snode, "tree_type", text="", expand=True)
if snode.tree_type == 'MATERIAL':
- ob = snode.id_from
- snode_id = snode.id
- if ob:
- layout.template_ID(ob, "active_material", new="material.new")
+ if id_from:
+ layout.template_ID(id_from, "active_material", new="material.new")
if snode_id:
layout.prop(snode_id, "use_nodes")
elif snode.tree_type == 'TEXTURE':
- row.prop(snode, "texture_type", text="", expand=True)
+ layout.prop(snode, "texture_type", text="", expand=True)
- snode_id = snode.id
- id_from = snode.id_from
if id_from:
if snode.texture_type == 'BRUSH':
layout.template_ID(id_from, "texture", new="texture.new")
@@ -63,10 +60,8 @@ class NODE_HT_header(bpy.types.Header):
layout.prop(snode_id, "use_nodes")
elif snode.tree_type == 'COMPOSITING':
- scene = snode.id
-
- layout.prop(scene, "use_nodes")
- layout.prop(scene.render, "use_free_unused_nodes", text="Free Unused")
+ layout.prop(snode_id, "use_nodes")
+ layout.prop(snode_id.render, "use_free_unused_nodes", text="Free Unused")
layout.prop(snode, "show_backdrop")
if snode.show_backdrop:
row = layout.row(align=True)
@@ -78,7 +73,7 @@ class NODE_HT_header(bpy.types.Header):
layout.template_running_jobs()
-class NODE_MT_view(bpy.types.Menu):
+class NODE_MT_view(Menu):
bl_label = "View"
def draw(self, context):
@@ -107,7 +102,7 @@ class NODE_MT_view(bpy.types.Menu):
layout.operator("screen.screen_full_area")
-class NODE_MT_select(bpy.types.Menu):
+class NODE_MT_select(Menu):
bl_label = "Select"
def draw(self, context):
@@ -124,7 +119,7 @@ class NODE_MT_select(bpy.types.Menu):
layout.operator("node.select_same_type_prev")
-class NODE_MT_node(bpy.types.Menu):
+class NODE_MT_node(Menu):
bl_label = "Node"
def draw(self, context):
@@ -165,7 +160,7 @@ class NODE_MT_node(bpy.types.Menu):
# Node Backdrop options
-class NODE_PT_properties(bpy.types.Panel):
+class NODE_PT_properties(Panel):
bl_space_type = 'NODE_EDITOR'
bl_region_type = 'UI'
bl_label = "Backdrop"
diff --git a/release/scripts/startup/bl_ui/space_outliner.py b/release/scripts/startup/bl_ui/space_outliner.py
index 1f196cbd191..b1e6eaf3245 100644
--- a/release/scripts/startup/bl_ui/space_outliner.py
+++ b/release/scripts/startup/bl_ui/space_outliner.py
@@ -18,9 +18,10 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu
-class OUTLINER_HT_header(bpy.types.Header):
+class OUTLINER_HT_header(Header):
bl_space_type = 'OUTLINER'
def draw(self, context):
@@ -63,7 +64,7 @@ class OUTLINER_HT_header(bpy.types.Header):
row.label(text="No Keying Set active")
-class OUTLINER_MT_view(bpy.types.Menu):
+class OUTLINER_MT_view(Menu):
bl_label = "View"
def draw(self, context):
@@ -71,14 +72,13 @@ class OUTLINER_MT_view(bpy.types.Menu):
space = context.space_data
- col = layout.column()
if space.display_mode not in {'DATABLOCKS', 'USER_PREFERENCES', 'KEYMAPS'}:
- col.prop(space, "show_restrict_columns")
- col.separator()
- col.operator("outliner.show_active")
+ layout.prop(space, "show_restrict_columns")
+ layout.separator()
+ layout.operator("outliner.show_active")
- col.operator("outliner.show_one_level")
- col.operator("outliner.show_hierarchy")
+ layout.operator("outliner.show_one_level")
+ layout.operator("outliner.show_hierarchy")
layout.separator()
@@ -86,7 +86,7 @@ class OUTLINER_MT_view(bpy.types.Menu):
layout.operator("screen.screen_full_area")
-class OUTLINER_MT_search(bpy.types.Menu):
+class OUTLINER_MT_search(Menu):
bl_label = "Search"
def draw(self, context):
@@ -94,27 +94,23 @@ class OUTLINER_MT_search(bpy.types.Menu):
space = context.space_data
- col = layout.column()
+ layout.prop(space, "use_filter_case_sensitive")
+ layout.prop(space, "use_filter_complete")
- col.prop(space, "use_filter_case_sensitive")
- col.prop(space, "use_filter_complete")
-
-class OUTLINER_MT_edit_datablocks(bpy.types.Menu):
+class OUTLINER_MT_edit_datablocks(Menu):
bl_label = "Edit"
def draw(self, context):
layout = self.layout
- col = layout.column()
-
- col.operator("outliner.keyingset_add_selected")
- col.operator("outliner.keyingset_remove_selected")
+ layout.operator("outliner.keyingset_add_selected")
+ layout.operator("outliner.keyingset_remove_selected")
- col.separator()
+ layout.separator()
- col.operator("outliner.drivers_add_selected")
- col.operator("outliner.drivers_delete_selected")
+ layout.operator("outliner.drivers_add_selected")
+ layout.operator("outliner.drivers_delete_selected")
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 19202088faf..f796ce8da5f 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu, Panel
def act_strip(context):
@@ -27,7 +28,7 @@ def act_strip(context):
return None
-class SEQUENCER_HT_header(bpy.types.Header):
+class SEQUENCER_HT_header(Header):
bl_space_type = 'SEQUENCE_EDITOR'
def draw(self, context):
@@ -39,14 +40,13 @@ class SEQUENCER_HT_header(bpy.types.Header):
row.template_header()
if context.area.show_menus:
- sub = row.row(align=True)
- sub.menu("SEQUENCER_MT_view")
+ row.menu("SEQUENCER_MT_view")
if st.view_type in {'SEQUENCER', 'SEQUENCER_PREVIEW'}:
- sub.menu("SEQUENCER_MT_select")
- sub.menu("SEQUENCER_MT_marker")
- sub.menu("SEQUENCER_MT_add")
- sub.menu("SEQUENCER_MT_strip")
+ row.menu("SEQUENCER_MT_select")
+ row.menu("SEQUENCER_MT_marker")
+ row.menu("SEQUENCER_MT_add")
+ row.menu("SEQUENCER_MT_strip")
layout.prop(st, "view_type", expand=True, text="")
@@ -76,7 +76,7 @@ class SEQUENCER_HT_header(bpy.types.Header):
row.prop(ed, "overlay_lock", text="", icon='LOCKED')
-class SEQUENCER_MT_view_toggle(bpy.types.Menu):
+class SEQUENCER_MT_view_toggle(Menu):
bl_label = "View Type"
def draw(self, context):
@@ -87,7 +87,7 @@ class SEQUENCER_MT_view_toggle(bpy.types.Menu):
layout.operator("sequencer.view_toggle").type = 'SEQUENCER_PREVIEW'
-class SEQUENCER_MT_view(bpy.types.Menu):
+class SEQUENCER_MT_view(Menu):
bl_label = "View"
def draw(self, context):
@@ -95,8 +95,6 @@ class SEQUENCER_MT_view(bpy.types.Menu):
st = context.space_data
- layout.column()
-
layout.operator("sequencer.properties", icon='MENU_PANEL')
layout.separator()
@@ -133,13 +131,12 @@ class SEQUENCER_MT_view(bpy.types.Menu):
layout.operator("screen.screen_full_area")
-class SEQUENCER_MT_select(bpy.types.Menu):
+class SEQUENCER_MT_select(Menu):
bl_label = "Select"
def draw(self, context):
layout = self.layout
- layout.column()
layout.operator("sequencer.select_active_side", text="Strips to the Left").side = 'LEFT'
layout.operator("sequencer.select_active_side", text="Strips to the Right").side = 'RIGHT'
layout.separator()
@@ -152,7 +149,7 @@ class SEQUENCER_MT_select(bpy.types.Menu):
layout.operator("sequencer.select_inverse")
-class SEQUENCER_MT_marker(bpy.types.Menu):
+class SEQUENCER_MT_marker(Menu):
bl_label = "Marker"
def draw(self, context):
@@ -160,7 +157,6 @@ class SEQUENCER_MT_marker(bpy.types.Menu):
#layout.operator_context = 'EXEC_REGION_WIN'
- layout.column()
layout.operator("marker.add", "Add Marker")
layout.operator("marker.duplicate", text="Duplicate Marker")
layout.operator("marker.delete", text="Delete Marker")
@@ -173,14 +169,26 @@ class SEQUENCER_MT_marker(bpy.types.Menu):
#layout.operator("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS)
-class SEQUENCER_MT_add(bpy.types.Menu):
+class SEQUENCER_MT_change(Menu):
+ bl_label = "Change"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator_context = 'INVOKE_REGION_WIN'
+
+ layout.operator_menu_enum("sequencer.change_effect_input", "swap")
+ layout.operator_menu_enum("sequencer.change_effect_type", "type")
+ layout.operator("sequencer.change_path", text="Path/Files")
+
+
+class SEQUENCER_MT_add(Menu):
bl_label = "Add"
def draw(self, context):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.column()
if len(bpy.data.scenes) > 10:
layout.operator_context = 'INVOKE_DEFAULT'
layout.operator("sequencer.scene_strip_add", text="Scene...")
@@ -194,14 +202,13 @@ class SEQUENCER_MT_add(bpy.types.Menu):
layout.menu("SEQUENCER_MT_add_effect")
-class SEQUENCER_MT_add_effect(bpy.types.Menu):
+class SEQUENCER_MT_add_effect(Menu):
bl_label = "Effect Strip..."
def draw(self, context):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.column()
layout.operator("sequencer.effect_strip_add", text="Add").type = 'ADD'
layout.operator("sequencer.effect_strip_add", text="Subtract").type = 'SUBTRACT'
layout.operator("sequencer.effect_strip_add", text="Alpha Over").type = 'ALPHA_OVER'
@@ -221,7 +228,7 @@ class SEQUENCER_MT_add_effect(bpy.types.Menu):
layout.operator("sequencer.effect_strip_add", text="Title Card").type = 'TITLE_CARD'
-class SEQUENCER_MT_strip(bpy.types.Menu):
+class SEQUENCER_MT_strip(Menu):
bl_label = "Strip"
def draw(self, context):
@@ -229,7 +236,6 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.column()
layout.operator("transform.transform", text="Grab/Move").mode = 'TRANSLATION'
layout.operator("transform.transform", text="Grab/Extend from frame").mode = 'TIME_EXTEND'
# uiItemO(layout, NULL, 0, "sequencer.strip_snap"); // TODO - add this operator
@@ -238,6 +244,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
layout.operator("sequencer.cut", text="Cut (hard) at frame").type = 'HARD'
layout.operator("sequencer.cut", text="Cut (soft) at frame").type = 'SOFT'
layout.operator("sequencer.images_separate")
+ layout.operator("sequencer.offset_clear")
layout.operator("sequencer.deinterlace_selected_movies")
layout.separator()
@@ -297,6 +304,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
layout.separator()
layout.operator("sequencer.swap_data")
+ layout.menu("SEQUENCER_MT_change")
class SequencerButtonsPanel():
@@ -325,7 +333,7 @@ class SequencerButtonsPanel_Output():
return cls.has_preview(context)
-class SEQUENCER_PT_edit(SequencerButtonsPanel, bpy.types.Panel):
+class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel):
bl_label = "Edit Strip"
def draw(self, context):
@@ -379,9 +387,11 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, bpy.types.Panel):
if elem and elem.orig_width > 0 and elem.orig_height > 0:
col.label(text="Orig Dim: %dx%d" % (elem.orig_width, elem.orig_height))
+ else:
+ col.label(text="Orig Dim: None")
-class SEQUENCER_PT_effect(SequencerButtonsPanel, bpy.types.Panel):
+class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
bl_label = "Effect Strip"
@classmethod
@@ -524,7 +534,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, bpy.types.Panel):
col.prop(strip, "rotation_start", text="Rotation")
-class SEQUENCER_PT_input(SequencerButtonsPanel, bpy.types.Panel):
+class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
bl_label = "Strip Input"
@classmethod
@@ -569,6 +579,9 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, bpy.types.Panel):
col = split.column()
col.prop(elem, "filename", text="") # strip.elements[0] could be a fallback
+ # also accessible from the menu
+ layout.operator("sequencer.change_path")
+
elif seq_type == 'MOVIE':
split = layout.split(percentage=0.2)
col = split.column()
@@ -606,7 +619,7 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, bpy.types.Panel):
col.prop(strip, "frame_offset_end", text="End")
-class SEQUENCER_PT_sound(SequencerButtonsPanel, bpy.types.Panel):
+class SEQUENCER_PT_sound(SequencerButtonsPanel, Panel):
bl_label = "Sound"
@classmethod
@@ -650,7 +663,7 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel, bpy.types.Panel):
col.prop(strip, "animation_offset_end", text="End")
-class SEQUENCER_PT_scene(SequencerButtonsPanel, bpy.types.Panel):
+class SEQUENCER_PT_scene(SequencerButtonsPanel, Panel):
bl_label = "Scene"
@classmethod
@@ -684,7 +697,7 @@ class SEQUENCER_PT_scene(SequencerButtonsPanel, bpy.types.Panel):
layout.label(text="Original frame range: %d-%d (%d)" % (sta, end, end - sta + 1))
-class SEQUENCER_PT_filter(SequencerButtonsPanel, bpy.types.Panel):
+class SEQUENCER_PT_filter(SequencerButtonsPanel, Panel):
bl_label = "Filter"
@classmethod
@@ -747,7 +760,7 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel, bpy.types.Panel):
col.prop(strip.color_balance, "invert_gain", text="Inverse")
-class SEQUENCER_PT_proxy(SequencerButtonsPanel, bpy.types.Panel):
+class SEQUENCER_PT_proxy(SequencerButtonsPanel, Panel):
bl_label = "Proxy"
@classmethod
@@ -781,7 +794,7 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel, bpy.types.Panel):
flow.prop(strip.proxy, "filepath")
-class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, bpy.types.Panel):
+class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, Panel):
bl_label = "Scene Preview/Render"
bl_space_type = 'SEQUENCE_EDITOR'
bl_region_type = 'UI'
@@ -806,7 +819,7 @@ class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, bpy.types.Panel):
'''
-class SEQUENCER_PT_view(SequencerButtonsPanel_Output, bpy.types.Panel):
+class SEQUENCER_PT_view(SequencerButtonsPanel_Output, Panel):
bl_label = "View Settings"
def draw(self, context):
diff --git a/release/scripts/startup/bl_ui/space_text.py b/release/scripts/startup/bl_ui/space_text.py
index b787fc5cf75..300211a26bf 100644
--- a/release/scripts/startup/bl_ui/space_text.py
+++ b/release/scripts/startup/bl_ui/space_text.py
@@ -18,9 +18,10 @@
# <pep8-80 compliant>
import bpy
+from bpy.types import Header, Menu, Panel
-class TEXT_HT_header(bpy.types.Header):
+class TEXT_HT_header(Header):
bl_space_type = 'TEXT_EDITOR'
def draw(self, context):
@@ -74,7 +75,7 @@ class TEXT_HT_header(bpy.types.Header):
else "Text: Internal")
-class TEXT_PT_properties(bpy.types.Panel):
+class TEXT_PT_properties(Panel):
bl_space_type = 'TEXT_EDITOR'
bl_region_type = 'UI'
bl_label = "Properties"
@@ -105,7 +106,7 @@ class TEXT_PT_properties(bpy.types.Panel):
col.prop(st, "margin_column")
-class TEXT_PT_find(bpy.types.Panel):
+class TEXT_PT_find(Panel):
bl_space_type = 'TEXT_EDITOR'
bl_region_type = 'UI'
bl_label = "Find"
@@ -139,7 +140,7 @@ class TEXT_PT_find(bpy.types.Panel):
row.prop(st, "use_find_all", text="All")
-class TEXT_MT_view(bpy.types.Menu):
+class TEXT_MT_view(Menu):
bl_label = "View"
def draw(self, context):
@@ -162,7 +163,7 @@ class TEXT_MT_view(bpy.types.Menu):
).type = 'FILE_BOTTOM'
-class TEXT_MT_text(bpy.types.Menu):
+class TEXT_MT_text(Menu):
bl_label = "Text"
def draw(self, context):
@@ -171,7 +172,6 @@ class TEXT_MT_text(bpy.types.Menu):
st = context.space_data
text = st.text
- layout.column()
layout.operator("text.new")
layout.operator("text.open")
@@ -188,13 +188,8 @@ class TEXT_MT_text(bpy.types.Menu):
layout.column()
layout.operator("text.run_script")
- #ifdef WITH_PYTHON
- # XXX if(BPY_is_pyconstraint(text))
- # XXX uiMenuItemO(head, 0, "text.refresh_pyconstraints");
- #endif
-
-class TEXT_MT_templates(bpy.types.Menu):
+class TEXT_MT_templates(Menu):
bl_label = "Templates"
def draw(self, context):
@@ -204,7 +199,7 @@ class TEXT_MT_templates(bpy.types.Menu):
)
-class TEXT_MT_edit_select(bpy.types.Menu):
+class TEXT_MT_edit_select(Menu):
bl_label = "Select"
def draw(self, context):
@@ -214,7 +209,7 @@ class TEXT_MT_edit_select(bpy.types.Menu):
layout.operator("text.select_line")
-class TEXT_MT_edit_markers(bpy.types.Menu):
+class TEXT_MT_edit_markers(Menu):
bl_label = "Markers"
def draw(self, context):
@@ -225,7 +220,7 @@ class TEXT_MT_edit_markers(bpy.types.Menu):
layout.operator("text.previous_marker")
-class TEXT_MT_format(bpy.types.Menu):
+class TEXT_MT_format(Menu):
bl_label = "Format"
def draw(self, context):
@@ -244,7 +239,7 @@ class TEXT_MT_format(bpy.types.Menu):
layout.operator_menu_enum("text.convert_whitespace", "type")
-class TEXT_MT_edit_to3d(bpy.types.Menu):
+class TEXT_MT_edit_to3d(Menu):
bl_label = "Text To 3D Object"
def draw(self, context):
@@ -258,7 +253,7 @@ class TEXT_MT_edit_to3d(bpy.types.Menu):
).split_lines = True
-class TEXT_MT_edit(bpy.types.Menu):
+class TEXT_MT_edit(Menu):
bl_label = "Edit"
@classmethod
@@ -292,7 +287,7 @@ class TEXT_MT_edit(bpy.types.Menu):
layout.menu("TEXT_MT_edit_to3d")
-class TEXT_MT_toolbox(bpy.types.Menu):
+class TEXT_MT_toolbox(Menu):
bl_label = ""
def draw(self, context):
diff --git a/release/scripts/startup/bl_ui/space_time.py b/release/scripts/startup/bl_ui/space_time.py
index 7e62465d1ee..db009fe43c2 100644
--- a/release/scripts/startup/bl_ui/space_time.py
+++ b/release/scripts/startup/bl_ui/space_time.py
@@ -18,9 +18,10 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu
-class TIME_HT_header(bpy.types.Header):
+class TIME_HT_header(Header):
bl_space_type = 'TIMELINE'
def draw(self, context):
@@ -34,10 +35,9 @@ class TIME_HT_header(bpy.types.Header):
row.template_header()
if context.area.show_menus:
- sub = row.row(align=True)
- sub.menu("TIME_MT_view")
- sub.menu("TIME_MT_frame")
- sub.menu("TIME_MT_playback")
+ row.menu("TIME_MT_view")
+ row.menu("TIME_MT_frame")
+ row.menu("TIME_MT_playback")
layout.prop(scene, "use_preview_range", text="", toggle=True)
@@ -91,7 +91,7 @@ class TIME_HT_header(bpy.types.Header):
row.operator("anim.keyframe_delete", text="", icon='KEY_DEHLT')
-class TIME_MT_view(bpy.types.Menu):
+class TIME_MT_view(Menu):
bl_label = "View"
def draw(self, context):
@@ -116,7 +116,7 @@ class TIME_MT_view(bpy.types.Menu):
layout.operator("marker.camera_bind")
-class TIME_MT_cache(bpy.types.Menu):
+class TIME_MT_cache(Menu):
bl_label = "Cache"
def draw(self, context):
@@ -136,7 +136,7 @@ class TIME_MT_cache(bpy.types.Menu):
col.prop(st, "cache_smoke")
-class TIME_MT_frame(bpy.types.Menu):
+class TIME_MT_frame(Menu):
bl_label = "Frame"
def draw(self, context):
@@ -162,7 +162,7 @@ class TIME_MT_frame(bpy.types.Menu):
sub.menu("TIME_MT_autokey")
-class TIME_MT_playback(bpy.types.Menu):
+class TIME_MT_playback(Menu):
bl_label = "Playback"
def draw(self, context):
@@ -187,7 +187,7 @@ class TIME_MT_playback(bpy.types.Menu):
layout.prop(scene, "use_audio_scrub")
-class TIME_MT_autokey(bpy.types.Menu):
+class TIME_MT_autokey(Menu):
bl_label = "Auto-Keyframing Mode"
def draw(self, context):
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index fd0d009dbb8..732a38308b0 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu, Operator, Panel
import os
import addon_utils
@@ -75,7 +76,7 @@ def opengl_lamp_buttons(column, lamp):
col.prop(lamp, "direction", text="")
-class USERPREF_HT_header(bpy.types.Header):
+class USERPREF_HT_header(Header):
bl_space_type = 'USER_PREFERENCES'
def draw(self, context):
@@ -99,7 +100,7 @@ class USERPREF_HT_header(bpy.types.Header):
layout.operator("ui.reset_default_theme")
-class USERPREF_PT_tabs(bpy.types.Panel):
+class USERPREF_PT_tabs(Panel):
bl_label = ""
bl_space_type = 'USER_PREFERENCES'
bl_region_type = 'WINDOW'
@@ -113,14 +114,14 @@ class USERPREF_PT_tabs(bpy.types.Panel):
layout.prop(userpref, "active_section", expand=True)
-class USERPREF_MT_interaction_presets(bpy.types.Menu):
+class USERPREF_MT_interaction_presets(Menu):
bl_label = "Presets"
preset_subdir = "interaction"
preset_operator = "script.execute_preset"
- draw = bpy.types.Menu.draw_preset
+ draw = Menu.draw_preset
-class USERPREF_MT_appconfigs(bpy.types.Menu):
+class USERPREF_MT_appconfigs(Menu):
bl_label = "AppPresets"
preset_subdir = "keyconfig"
preset_operator = "wm.appconfig_activate"
@@ -129,10 +130,10 @@ class USERPREF_MT_appconfigs(bpy.types.Menu):
self.layout.operator("wm.appconfig_default", text="Blender (default)")
# now draw the presets
- bpy.types.Menu.draw_preset(self, context)
+ Menu.draw_preset(self, context)
-class USERPREF_MT_splash(bpy.types.Menu):
+class USERPREF_MT_splash(Menu):
bl_label = "Splash"
def draw(self, context):
@@ -149,7 +150,7 @@ class USERPREF_MT_splash(bpy.types.Menu):
row.menu("USERPREF_MT_appconfigs", text="Preset")
-class USERPREF_PT_interface(bpy.types.Panel):
+class USERPREF_PT_interface(Panel):
bl_space_type = 'USER_PREFERENCES'
bl_label = "Interface"
bl_region_type = 'WINDOW'
@@ -246,7 +247,7 @@ class USERPREF_PT_interface(bpy.types.Panel):
col.prop(view, "show_splash")
-class USERPREF_PT_edit(bpy.types.Panel):
+class USERPREF_PT_edit(Panel):
bl_space_type = 'USER_PREFERENCES'
bl_label = "Edit"
bl_region_type = 'WINDOW'
@@ -359,7 +360,7 @@ class USERPREF_PT_edit(bpy.types.Panel):
col.prop(edit, "use_duplicate_particle", text="Particle")
-class USERPREF_PT_system(bpy.types.Panel):
+class USERPREF_PT_system(Panel):
bl_space_type = 'USER_PREFERENCES'
bl_label = "System"
bl_region_type = 'WINDOW'
@@ -496,7 +497,7 @@ class USERPREF_PT_system(bpy.types.Panel):
sub.template_color_ramp(system, "weight_color_range", expand=True)
-class USERPREF_PT_theme(bpy.types.Panel):
+class USERPREF_PT_theme(Panel):
bl_space_type = 'USER_PREFERENCES'
bl_label = "Themes"
bl_region_type = 'WINDOW'
@@ -679,7 +680,7 @@ class USERPREF_PT_theme(bpy.types.Panel):
self._theme_generic(split, getattr(theme, theme.theme_area.lower()))
-class USERPREF_PT_file(bpy.types.Panel):
+class USERPREF_PT_file(Panel):
bl_space_type = 'USER_PREFERENCES'
bl_label = "Files"
bl_region_type = 'WINDOW'
@@ -756,7 +757,7 @@ class USERPREF_PT_file(bpy.types.Panel):
from bl_ui.space_userpref_keymap import InputKeyMapPanel
-class USERPREF_MT_ndof_settings(bpy.types.Menu):
+class USERPREF_MT_ndof_settings(Menu):
# accessed from the window keybindings in C (only)
bl_label = "3D Mouse Settings"
@@ -781,7 +782,7 @@ class USERPREF_MT_ndof_settings(bpy.types.Menu):
layout.prop(input_prefs, "ndof_lock_horizon", icon='NDOF_DOM')
-class USERPREF_PT_input(bpy.types.Panel, InputKeyMapPanel):
+class USERPREF_PT_input(Panel, InputKeyMapPanel):
bl_space_type = 'USER_PREFERENCES'
bl_label = "Input"
@@ -871,7 +872,7 @@ class USERPREF_PT_input(bpy.types.Panel, InputKeyMapPanel):
#print("runtime", time.time() - start)
-class USERPREF_MT_addons_dev_guides(bpy.types.Menu):
+class USERPREF_MT_addons_dev_guides(Menu):
bl_label = "Development Guides"
# menu to open webpages with addons development guides
@@ -882,7 +883,7 @@ class USERPREF_MT_addons_dev_guides(bpy.types.Menu):
layout.operator('wm.url_open', text='How to share your addon', icon='URL').url = 'http://wiki.blender.org/index.php/Dev:Py/Sharing'
-class USERPREF_PT_addons(bpy.types.Panel):
+class USERPREF_PT_addons(Panel):
bl_space_type = 'USER_PREFERENCES'
bl_label = "Addons"
bl_region_type = 'WINDOW'
@@ -1072,7 +1073,7 @@ class USERPREF_PT_addons(bpy.types.Panel):
row.operator("wm.addon_disable", icon='CHECKBOX_HLT', text="", emboss=False).module = module_name
-class WM_OT_addon_enable(bpy.types.Operator):
+class WM_OT_addon_enable(Operator):
"Enable an addon"
bl_idname = "wm.addon_enable"
bl_label = "Enable Add-On"
@@ -1101,7 +1102,7 @@ class WM_OT_addon_enable(bpy.types.Operator):
return {'CANCELLED'}
-class WM_OT_addon_disable(bpy.types.Operator):
+class WM_OT_addon_disable(Operator):
"Disable an addon"
bl_idname = "wm.addon_disable"
bl_label = "Disable Add-On"
@@ -1113,7 +1114,7 @@ class WM_OT_addon_disable(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_addon_install(bpy.types.Operator):
+class WM_OT_addon_install(Operator):
"Install an addon"
bl_idname = "wm.addon_install"
bl_label = "Install Add-On..."
@@ -1259,7 +1260,7 @@ class WM_OT_addon_install(bpy.types.Operator):
return {'RUNNING_MODAL'}
-class WM_OT_addon_remove(bpy.types.Operator):
+class WM_OT_addon_remove(Operator):
"Disable an addon"
bl_idname = "wm.addon_remove"
bl_label = "Remove Add-On"
@@ -1307,7 +1308,7 @@ class WM_OT_addon_remove(bpy.types.Operator):
return wm.invoke_props_dialog(self, width=600)
-class WM_OT_addon_expand(bpy.types.Operator):
+class WM_OT_addon_expand(Operator):
"Display more information on this add-on"
bl_idname = "wm.addon_expand"
bl_label = ""
diff --git a/release/scripts/startup/bl_ui/space_userpref_keymap.py b/release/scripts/startup/bl_ui/space_userpref_keymap.py
index f63da6551de..6a81ff5830e 100644
--- a/release/scripts/startup/bl_ui/space_userpref_keymap.py
+++ b/release/scripts/startup/bl_ui/space_userpref_keymap.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Menu, Operator, OperatorProperties
import os
@@ -124,7 +125,7 @@ def _merge_keymaps(kc1, kc2):
return merged_keymaps
-class USERPREF_MT_keyconfigs(bpy.types.Menu):
+class USERPREF_MT_keyconfigs(Menu):
bl_label = "KeyPresets"
preset_subdir = "keyconfig"
preset_operator = "wm.keyconfig_activate"
@@ -135,7 +136,7 @@ class USERPREF_MT_keyconfigs(bpy.types.Menu):
props.value = "context.window_manager.keyconfigs.default"
# now draw the presets
- bpy.types.Menu.draw_preset(self, context)
+ Menu.draw_preset(self, context)
class InputKeyMapPanel:
@@ -232,7 +233,7 @@ class InputKeyMapPanel:
flow = box.column_flow(columns=2)
for pname, value in properties.bl_rna.properties.items():
if pname != "rna_type" and not properties.is_property_hidden(pname):
- if isinstance(value, bpy.types.OperatorProperties):
+ if isinstance(value, OperatorProperties):
InputKeyMapPanel.draw_kmi_properties(box, value, title=pname)
else:
flow.prop(properties, pname)
@@ -410,7 +411,7 @@ def export_properties(prefix, properties, lines=None):
for pname in properties.bl_rna.properties.keys():
if pname != "rna_type" and not properties.is_property_hidden(pname):
value = getattr(properties, pname)
- if isinstance(value, bpy.types.OperatorProperties):
+ if isinstance(value, OperatorProperties):
export_properties(prefix + "." + pname, value, lines)
elif properties.is_property_set(pname):
value = _string_value(value)
@@ -419,7 +420,7 @@ def export_properties(prefix, properties, lines=None):
return lines
-class WM_OT_keyconfig_test(bpy.types.Operator):
+class WM_OT_keyconfig_test(Operator):
"Test keyconfig for conflicts"
bl_idname = "wm.keyconfig_test"
bl_label = "Test Key Configuration for Conflicts"
@@ -527,7 +528,7 @@ def _string_value(value):
return result
-class WM_OT_keyconfig_import(bpy.types.Operator):
+class WM_OT_keyconfig_import(Operator):
"Import key configuration from a python script"
bl_idname = "wm.keyconfig_import"
bl_label = "Import Key Configuration..."
@@ -574,7 +575,7 @@ class WM_OT_keyconfig_import(bpy.types.Operator):
# This operator is also used by interaction presets saving - AddPresetBase
-class WM_OT_keyconfig_export(bpy.types.Operator):
+class WM_OT_keyconfig_export(Operator):
"Export key configuration to a python script"
bl_idname = "wm.keyconfig_export"
bl_label = "Export Key Configuration..."
@@ -667,7 +668,7 @@ class WM_OT_keyconfig_export(bpy.types.Operator):
return {'RUNNING_MODAL'}
-class WM_OT_keymap_restore(bpy.types.Operator):
+class WM_OT_keymap_restore(Operator):
"Restore key map(s)"
bl_idname = "wm.keymap_restore"
bl_label = "Restore Key Map(s)"
@@ -687,7 +688,7 @@ class WM_OT_keymap_restore(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_keyitem_restore(bpy.types.Operator):
+class WM_OT_keyitem_restore(Operator):
"Restore key map item"
bl_idname = "wm.keyitem_restore"
bl_label = "Restore Key Map Item"
@@ -709,7 +710,7 @@ class WM_OT_keyitem_restore(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_keyitem_add(bpy.types.Operator):
+class WM_OT_keyitem_add(Operator):
"Add key map item"
bl_idname = "wm.keyitem_add"
bl_label = "Add Key Map Item"
@@ -731,7 +732,7 @@ class WM_OT_keyitem_add(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_keyitem_remove(bpy.types.Operator):
+class WM_OT_keyitem_remove(Operator):
"Remove key map item"
bl_idname = "wm.keyitem_remove"
bl_label = "Remove Key Map Item"
@@ -749,7 +750,7 @@ class WM_OT_keyitem_remove(bpy.types.Operator):
return {'FINISHED'}
-class WM_OT_keyconfig_remove(bpy.types.Operator):
+class WM_OT_keyconfig_remove(Operator):
"Remove key config"
bl_idname = "wm.keyconfig_remove"
bl_label = "Remove Key Config"
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index c38bc0abc96..c1add444bf1 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -18,9 +18,10 @@
# <pep8 compliant>
import bpy
+from bpy.types import Header, Menu, Operator, Panel
-class VIEW3D_HT_header(bpy.types.Header):
+class VIEW3D_HT_header(Header):
bl_space_type = 'VIEW_3D'
def draw(self, context):
@@ -128,7 +129,7 @@ class ShowHideMenu():
layout.operator("%s.hide" % self._operator_name, text="Hide Unselected").unselected = True
-class VIEW3D_MT_transform(bpy.types.Menu):
+class VIEW3D_MT_transform(Menu):
bl_label = "Transform"
# TODO: get rid of the custom text strings?
@@ -184,7 +185,7 @@ class VIEW3D_MT_transform(bpy.types.Menu):
layout.operator("object.anim_transforms_to_deltas")
-class VIEW3D_MT_mirror(bpy.types.Menu):
+class VIEW3D_MT_mirror(Menu):
bl_label = "Mirror"
def draw(self, context):
@@ -222,7 +223,7 @@ class VIEW3D_MT_mirror(bpy.types.Menu):
layout.operator("object.vertex_group_mirror")
-class VIEW3D_MT_snap(bpy.types.Menu):
+class VIEW3D_MT_snap(Menu):
bl_label = "Snap"
def draw(self, context):
@@ -239,7 +240,7 @@ class VIEW3D_MT_snap(bpy.types.Menu):
layout.operator("view3d.snap_cursor_to_active", text="Cursor to Active")
-class VIEW3D_MT_uv_map(bpy.types.Menu):
+class VIEW3D_MT_uv_map(Menu):
bl_label = "UV Mapping"
def draw(self, context):
@@ -272,7 +273,7 @@ class VIEW3D_MT_uv_map(bpy.types.Menu):
# ********** View menus **********
-class VIEW3D_MT_view(bpy.types.Menu):
+class VIEW3D_MT_view(Menu):
bl_label = "View"
def draw(self, context):
@@ -330,7 +331,7 @@ class VIEW3D_MT_view(bpy.types.Menu):
layout.operator("screen.screen_full_area")
-class VIEW3D_MT_view_navigation(bpy.types.Menu):
+class VIEW3D_MT_view_navigation(Menu):
bl_label = "Navigation"
def draw(self, context):
@@ -353,7 +354,7 @@ class VIEW3D_MT_view_navigation(bpy.types.Menu):
layout.operator("view3d.fly")
-class VIEW3D_MT_view_align(bpy.types.Menu):
+class VIEW3D_MT_view_align(Menu):
bl_label = "Align View"
def draw(self, context):
@@ -369,7 +370,7 @@ class VIEW3D_MT_view_align(bpy.types.Menu):
layout.operator("view3d.view_center_cursor")
-class VIEW3D_MT_view_align_selected(bpy.types.Menu):
+class VIEW3D_MT_view_align_selected(Menu):
bl_label = "Align View to Selected"
def draw(self, context):
@@ -395,7 +396,7 @@ class VIEW3D_MT_view_align_selected(bpy.types.Menu):
props.type = 'LEFT'
-class VIEW3D_MT_view_cameras(bpy.types.Menu):
+class VIEW3D_MT_view_cameras(Menu):
bl_label = "Cameras"
def draw(self, context):
@@ -407,7 +408,7 @@ class VIEW3D_MT_view_cameras(bpy.types.Menu):
# ********** Select menus, suffix from context.mode **********
-class VIEW3D_MT_select_object(bpy.types.Menu):
+class VIEW3D_MT_select_object(Menu):
bl_label = "Select"
def draw(self, context):
@@ -433,7 +434,7 @@ class VIEW3D_MT_select_object(bpy.types.Menu):
layout.operator("object.select_pattern", text="Select Pattern...")
-class VIEW3D_MT_select_pose(bpy.types.Menu):
+class VIEW3D_MT_select_pose(Menu):
bl_label = "Select"
def draw(self, context):
@@ -470,7 +471,7 @@ class VIEW3D_MT_select_pose(bpy.types.Menu):
layout.operator("object.select_pattern", text="Select Pattern...")
-class VIEW3D_MT_select_particle(bpy.types.Menu):
+class VIEW3D_MT_select_particle(Menu):
bl_label = "Select"
def draw(self, context):
@@ -495,7 +496,7 @@ class VIEW3D_MT_select_particle(bpy.types.Menu):
layout.operator("particle.select_tips", text="Tips")
-class VIEW3D_MT_select_edit_mesh(bpy.types.Menu):
+class VIEW3D_MT_select_edit_mesh(Menu):
bl_label = "Select"
def draw(self, context):
@@ -547,7 +548,7 @@ class VIEW3D_MT_select_edit_mesh(bpy.types.Menu):
layout.operator("mesh.region_to_loop")
-class VIEW3D_MT_select_edit_curve(bpy.types.Menu):
+class VIEW3D_MT_select_edit_curve(Menu):
bl_label = "Select"
def draw(self, context):
@@ -576,7 +577,7 @@ class VIEW3D_MT_select_edit_curve(bpy.types.Menu):
layout.operator("curve.select_less")
-class VIEW3D_MT_select_edit_surface(bpy.types.Menu):
+class VIEW3D_MT_select_edit_surface(Menu):
bl_label = "Select"
def draw(self, context):
@@ -602,7 +603,7 @@ class VIEW3D_MT_select_edit_surface(bpy.types.Menu):
layout.operator("curve.select_less")
-class VIEW3D_MT_select_edit_metaball(bpy.types.Menu):
+class VIEW3D_MT_select_edit_metaball(Menu):
bl_label = "Select"
def draw(self, context):
@@ -620,7 +621,7 @@ class VIEW3D_MT_select_edit_metaball(bpy.types.Menu):
layout.operator("mball.select_random_metaelems")
-class VIEW3D_MT_select_edit_lattice(bpy.types.Menu):
+class VIEW3D_MT_select_edit_lattice(Menu):
bl_label = "Select"
def draw(self, context):
@@ -633,7 +634,7 @@ class VIEW3D_MT_select_edit_lattice(bpy.types.Menu):
layout.operator("lattice.select_all", text="Select/Deselect All")
-class VIEW3D_MT_select_edit_armature(bpy.types.Menu):
+class VIEW3D_MT_select_edit_armature(Menu):
bl_label = "Select"
def draw(self, context):
@@ -664,7 +665,7 @@ class VIEW3D_MT_select_edit_armature(bpy.types.Menu):
layout.operator("object.select_pattern", text="Select Pattern...")
-class VIEW3D_MT_select_face(bpy.types.Menu): # XXX no matching enum
+class VIEW3D_MT_select_face(Menu): # XXX no matching enum
bl_label = "Select"
def draw(self, context):
@@ -677,7 +678,7 @@ class VIEW3D_MT_select_face(bpy.types.Menu): # XXX no matching enum
# ********** Object menu **********
-class VIEW3D_MT_object(bpy.types.Menu):
+class VIEW3D_MT_object(Menu):
bl_context = "objectmode"
bl_label = "Object"
@@ -735,7 +736,7 @@ class VIEW3D_MT_object(bpy.types.Menu):
layout.operator_menu_enum("object.convert", "target")
-class VIEW3D_MT_object_animation(bpy.types.Menu):
+class VIEW3D_MT_object_animation(Menu):
bl_label = "Animation"
def draw(self, context):
@@ -746,7 +747,7 @@ class VIEW3D_MT_object_animation(bpy.types.Menu):
layout.operator("anim.keying_set_active_set", text="Change Keying Set...")
-class VIEW3D_MT_object_clear(bpy.types.Menu):
+class VIEW3D_MT_object_clear(Menu):
bl_label = "Clear"
def draw(self, context):
@@ -758,7 +759,7 @@ class VIEW3D_MT_object_clear(bpy.types.Menu):
layout.operator("object.origin_clear", text="Origin")
-class VIEW3D_MT_object_specials(bpy.types.Menu):
+class VIEW3D_MT_object_specials(Menu):
bl_label = "Specials"
@classmethod
@@ -853,7 +854,7 @@ class VIEW3D_MT_object_specials(bpy.types.Menu):
props = layout.operator("object.hide_render_clear_all")
-class VIEW3D_MT_object_apply(bpy.types.Menu):
+class VIEW3D_MT_object_apply(Menu):
bl_label = "Apply"
def draw(self, context):
@@ -872,7 +873,7 @@ class VIEW3D_MT_object_apply(bpy.types.Menu):
layout.operator("object.duplicates_make_real")
-class VIEW3D_MT_object_parent(bpy.types.Menu):
+class VIEW3D_MT_object_parent(Menu):
bl_label = "Parent"
def draw(self, context):
@@ -882,7 +883,7 @@ class VIEW3D_MT_object_parent(bpy.types.Menu):
layout.operator("object.parent_clear", text="Clear")
-class VIEW3D_MT_object_track(bpy.types.Menu):
+class VIEW3D_MT_object_track(Menu):
bl_label = "Track"
def draw(self, context):
@@ -892,7 +893,7 @@ class VIEW3D_MT_object_track(bpy.types.Menu):
layout.operator("object.track_clear", text="Clear")
-class VIEW3D_MT_object_group(bpy.types.Menu):
+class VIEW3D_MT_object_group(Menu):
bl_label = "Group"
def draw(self, context):
@@ -907,7 +908,7 @@ class VIEW3D_MT_object_group(bpy.types.Menu):
layout.operator("group.objects_remove_active")
-class VIEW3D_MT_object_constraints(bpy.types.Menu):
+class VIEW3D_MT_object_constraints(Menu):
bl_label = "Constraints"
def draw(self, context):
@@ -918,7 +919,7 @@ class VIEW3D_MT_object_constraints(bpy.types.Menu):
layout.operator("object.constraints_clear")
-class VIEW3D_MT_object_showhide(bpy.types.Menu):
+class VIEW3D_MT_object_showhide(Menu):
bl_label = "Show/Hide"
def draw(self, context):
@@ -929,7 +930,7 @@ class VIEW3D_MT_object_showhide(bpy.types.Menu):
layout.operator("object.hide_view_set", text="Hide Unselected").unselected = True
-class VIEW3D_MT_make_single_user(bpy.types.Menu):
+class VIEW3D_MT_make_single_user(Menu):
bl_label = "Make Single User"
def draw(self, context):
@@ -951,7 +952,7 @@ class VIEW3D_MT_make_single_user(bpy.types.Menu):
props.animation = True
-class VIEW3D_MT_make_links(bpy.types.Menu):
+class VIEW3D_MT_make_links(Menu):
bl_label = "Make Links"
def draw(self, context):
@@ -968,7 +969,7 @@ class VIEW3D_MT_make_links(bpy.types.Menu):
layout.operator_enum("object.make_links_data", "type") # inline
-class VIEW3D_MT_object_game(bpy.types.Menu):
+class VIEW3D_MT_object_game(Menu):
bl_label = "Game"
def draw(self, context):
@@ -990,7 +991,7 @@ class VIEW3D_MT_object_game(bpy.types.Menu):
# ********** Vertex paint menu **********
-class VIEW3D_MT_paint_vertex(bpy.types.Menu):
+class VIEW3D_MT_paint_vertex(Menu):
bl_label = "Paint"
def draw(self, context):
@@ -1005,7 +1006,7 @@ class VIEW3D_MT_paint_vertex(bpy.types.Menu):
layout.operator("paint.vertex_color_dirt")
-class VIEW3D_MT_hook(bpy.types.Menu):
+class VIEW3D_MT_hook(Menu):
bl_label = "Hooks"
def draw(self, context):
@@ -1024,7 +1025,7 @@ class VIEW3D_MT_hook(bpy.types.Menu):
layout.operator_menu_enum("object.hook_recenter", "modifier")
-class VIEW3D_MT_vertex_group(bpy.types.Menu):
+class VIEW3D_MT_vertex_group(Menu):
bl_label = "Vertex Groups"
def draw(self, context):
@@ -1049,7 +1050,7 @@ class VIEW3D_MT_vertex_group(bpy.types.Menu):
# ********** Weight paint menu **********
-class VIEW3D_MT_paint_weight(bpy.types.Menu):
+class VIEW3D_MT_paint_weight(Menu):
bl_label = "Weights"
def draw(self, context):
@@ -1079,7 +1080,7 @@ class VIEW3D_MT_paint_weight(bpy.types.Menu):
# ********** Sculpt menu **********
-class VIEW3D_MT_sculpt(bpy.types.Menu):
+class VIEW3D_MT_sculpt(Menu):
bl_label = "Sculpt"
def draw(self, context):
@@ -1129,7 +1130,7 @@ class VIEW3D_MT_sculpt(bpy.types.Menu):
# ********** Particle menu **********
-class VIEW3D_MT_particle(bpy.types.Menu):
+class VIEW3D_MT_particle(Menu):
bl_label = "Particle"
def draw(self, context):
@@ -1161,7 +1162,7 @@ class VIEW3D_MT_particle(bpy.types.Menu):
layout.menu("VIEW3D_MT_particle_showhide")
-class VIEW3D_MT_particle_specials(bpy.types.Menu):
+class VIEW3D_MT_particle_specials(Menu):
bl_label = "Specials"
def draw(self, context):
@@ -1179,13 +1180,13 @@ class VIEW3D_MT_particle_specials(bpy.types.Menu):
layout.operator("particle.remove_doubles")
-class VIEW3D_MT_particle_showhide(ShowHideMenu, bpy.types.Menu):
+class VIEW3D_MT_particle_showhide(ShowHideMenu, Menu):
_operator_name = "particle"
# ********** Pose Menu **********
-class VIEW3D_MT_pose(bpy.types.Menu):
+class VIEW3D_MT_pose(Menu):
bl_label = "Pose"
def draw(self, context):
@@ -1254,7 +1255,7 @@ class VIEW3D_MT_pose(bpy.types.Menu):
layout.menu("VIEW3D_MT_bone_options_toggle", text="Bone Settings")
-class VIEW3D_MT_pose_transform(bpy.types.Menu):
+class VIEW3D_MT_pose_transform(Menu):
bl_label = "Clear Transform"
def draw(self, context):
@@ -1272,8 +1273,7 @@ class VIEW3D_MT_pose_transform(bpy.types.Menu):
layout.operator("pose.user_transforms_clear", text="Reset unkeyed")
-
-class VIEW3D_MT_pose_slide(bpy.types.Menu):
+class VIEW3D_MT_pose_slide(Menu):
bl_label = "In-Betweens"
def draw(self, context):
@@ -1284,7 +1284,7 @@ class VIEW3D_MT_pose_slide(bpy.types.Menu):
layout.operator("pose.breakdown")
-class VIEW3D_MT_pose_propagate(bpy.types.Menu):
+class VIEW3D_MT_pose_propagate(Menu):
bl_label = "Propagate"
def draw(self, context):
@@ -1302,7 +1302,7 @@ class VIEW3D_MT_pose_propagate(bpy.types.Menu):
layout.operator("pose.propagate", text="On Selected Markers").mode = 'SELECTED_MARKERS'
-class VIEW3D_MT_pose_library(bpy.types.Menu):
+class VIEW3D_MT_pose_library(Menu):
bl_label = "Pose Library"
def draw(self, context):
@@ -1317,7 +1317,7 @@ class VIEW3D_MT_pose_library(bpy.types.Menu):
layout.operator("poselib.pose_remove", text="Remove Pose...")
-class VIEW3D_MT_pose_motion(bpy.types.Menu):
+class VIEW3D_MT_pose_motion(Menu):
bl_label = "Motion Paths"
def draw(self, context):
@@ -1327,7 +1327,7 @@ class VIEW3D_MT_pose_motion(bpy.types.Menu):
layout.operator("pose.paths_clear", text="Clear")
-class VIEW3D_MT_pose_group(bpy.types.Menu):
+class VIEW3D_MT_pose_group(Menu):
bl_label = "Bone Groups"
def draw(self, context):
@@ -1341,7 +1341,7 @@ class VIEW3D_MT_pose_group(bpy.types.Menu):
layout.operator("pose.group_unassign")
-class VIEW3D_MT_pose_ik(bpy.types.Menu):
+class VIEW3D_MT_pose_ik(Menu):
bl_label = "Inverse Kinematics"
def draw(self, context):
@@ -1351,7 +1351,7 @@ class VIEW3D_MT_pose_ik(bpy.types.Menu):
layout.operator("pose.ik_clear")
-class VIEW3D_MT_pose_constraints(bpy.types.Menu):
+class VIEW3D_MT_pose_constraints(Menu):
bl_label = "Constraints"
def draw(self, context):
@@ -1362,11 +1362,11 @@ class VIEW3D_MT_pose_constraints(bpy.types.Menu):
layout.operator("pose.constraints_clear")
-class VIEW3D_MT_pose_showhide(ShowHideMenu, bpy.types.Menu):
+class VIEW3D_MT_pose_showhide(ShowHideMenu, Menu):
_operator_name = "pose"
-class VIEW3D_MT_pose_apply(bpy.types.Menu):
+class VIEW3D_MT_pose_apply(Menu):
bl_label = "Apply"
def draw(self, context):
@@ -1405,24 +1405,24 @@ class BoneOptions:
props.type = self.type
-class VIEW3D_MT_bone_options_toggle(bpy.types.Menu, BoneOptions):
+class VIEW3D_MT_bone_options_toggle(Menu, BoneOptions):
bl_label = "Toggle Bone Options"
type = 'TOGGLE'
-class VIEW3D_MT_bone_options_enable(bpy.types.Menu, BoneOptions):
+class VIEW3D_MT_bone_options_enable(Menu, BoneOptions):
bl_label = "Enable Bone Options"
type = 'ENABLE'
-class VIEW3D_MT_bone_options_disable(bpy.types.Menu, BoneOptions):
+class VIEW3D_MT_bone_options_disable(Menu, BoneOptions):
bl_label = "Disable Bone Options"
type = 'DISABLE'
# ********** Edit Menus, suffix from ob.type **********
-class VIEW3D_MT_edit_mesh(bpy.types.Menu):
+class VIEW3D_MT_edit_mesh(Menu):
bl_label = "Mesh"
def draw(self, context):
@@ -1469,7 +1469,7 @@ class VIEW3D_MT_edit_mesh(bpy.types.Menu):
layout.menu("VIEW3D_MT_edit_mesh_showhide")
-class VIEW3D_MT_edit_mesh_specials(bpy.types.Menu):
+class VIEW3D_MT_edit_mesh_specials(Menu):
bl_label = "Specials"
def draw(self, context):
@@ -1494,7 +1494,7 @@ class VIEW3D_MT_edit_mesh_specials(bpy.types.Menu):
layout.operator("mesh.select_vertex_path")
-class VIEW3D_MT_edit_mesh_select_mode(bpy.types.Menu):
+class VIEW3D_MT_edit_mesh_select_mode(Menu):
bl_label = "Mesh Select Mode"
def draw(self, context):
@@ -1515,7 +1515,7 @@ class VIEW3D_MT_edit_mesh_select_mode(bpy.types.Menu):
prop.data_path = "tool_settings.mesh_select_mode"
-class VIEW3D_MT_edit_mesh_extrude(bpy.types.Menu):
+class VIEW3D_MT_edit_mesh_extrude(Menu):
bl_label = "Extrude"
_extrude_funcs = { \
@@ -1549,7 +1549,7 @@ class VIEW3D_MT_edit_mesh_extrude(bpy.types.Menu):
self._extrude_funcs[menu_id](layout)
-class VIEW3D_OT_edit_mesh_extrude_individual_move(bpy.types.Operator):
+class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator):
"Extrude individual elements and move"
bl_label = "Extrude Individual and Move"
bl_idname = "view3d.edit_mesh_extrude_individual_move"
@@ -1578,7 +1578,7 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(bpy.types.Operator):
return self.execute(context)
-class VIEW3D_OT_edit_mesh_extrude_move(bpy.types.Operator):
+class VIEW3D_OT_edit_mesh_extrude_move(Operator):
"Extrude and move along normals"
bl_label = "Extrude and Move on Normals"
bl_idname = "view3d.edit_mesh_extrude_move_normal"
@@ -1604,7 +1604,7 @@ class VIEW3D_OT_edit_mesh_extrude_move(bpy.types.Operator):
return self.execute(context)
-class VIEW3D_MT_edit_mesh_vertices(bpy.types.Menu):
+class VIEW3D_MT_edit_mesh_vertices(Menu):
bl_label = "Vertices"
def draw(self, context):
@@ -1636,7 +1636,7 @@ class VIEW3D_MT_edit_mesh_vertices(bpy.types.Menu):
layout.menu("VIEW3D_MT_hook")
-class VIEW3D_MT_edit_mesh_edges(bpy.types.Menu):
+class VIEW3D_MT_edit_mesh_edges(Menu):
bl_label = "Edges"
def draw(self, context):
@@ -1676,7 +1676,7 @@ class VIEW3D_MT_edit_mesh_edges(bpy.types.Menu):
layout.operator("mesh.region_to_loop")
-class VIEW3D_MT_edit_mesh_faces(bpy.types.Menu):
+class VIEW3D_MT_edit_mesh_faces(Menu):
bl_label = "Faces"
bl_idname = "VIEW3D_MT_edit_mesh_faces"
@@ -1724,7 +1724,7 @@ class VIEW3D_MT_edit_mesh_faces(bpy.types.Menu):
layout.operator_menu_enum("mesh.colors_mirror", "axis")
-class VIEW3D_MT_edit_mesh_normals(bpy.types.Menu):
+class VIEW3D_MT_edit_mesh_normals(Menu):
bl_label = "Normals"
def draw(self, context):
@@ -1738,7 +1738,7 @@ class VIEW3D_MT_edit_mesh_normals(bpy.types.Menu):
layout.operator("mesh.flip_normals")
-class VIEW3D_MT_edit_mesh_showhide(ShowHideMenu, bpy.types.Menu):
+class VIEW3D_MT_edit_mesh_showhide(ShowHideMenu, Menu):
_operator_name = "mesh"
# Edit Curve
@@ -1778,13 +1778,13 @@ def draw_curve(self, context):
layout.menu("VIEW3D_MT_edit_curve_showhide")
-class VIEW3D_MT_edit_curve(bpy.types.Menu):
+class VIEW3D_MT_edit_curve(Menu):
bl_label = "Curve"
draw = draw_curve
-class VIEW3D_MT_edit_curve_ctrlpoints(bpy.types.Menu):
+class VIEW3D_MT_edit_curve_ctrlpoints(Menu):
bl_label = "Control Points"
def draw(self, context):
@@ -1806,7 +1806,7 @@ class VIEW3D_MT_edit_curve_ctrlpoints(bpy.types.Menu):
layout.menu("VIEW3D_MT_hook")
-class VIEW3D_MT_edit_curve_segments(bpy.types.Menu):
+class VIEW3D_MT_edit_curve_segments(Menu):
bl_label = "Segments"
def draw(self, context):
@@ -1816,7 +1816,7 @@ class VIEW3D_MT_edit_curve_segments(bpy.types.Menu):
layout.operator("curve.switch_direction")
-class VIEW3D_MT_edit_curve_specials(bpy.types.Menu):
+class VIEW3D_MT_edit_curve_specials(Menu):
bl_label = "Specials"
def draw(self, context):
@@ -1830,17 +1830,17 @@ class VIEW3D_MT_edit_curve_specials(bpy.types.Menu):
layout.operator("curve.smooth_radius")
-class VIEW3D_MT_edit_curve_showhide(ShowHideMenu, bpy.types.Menu):
+class VIEW3D_MT_edit_curve_showhide(ShowHideMenu, Menu):
_operator_name = "curve"
-class VIEW3D_MT_edit_surface(bpy.types.Menu):
+class VIEW3D_MT_edit_surface(Menu):
bl_label = "Surface"
draw = draw_curve
-class VIEW3D_MT_edit_font(bpy.types.Menu):
+class VIEW3D_MT_edit_font(Menu):
bl_label = "Text"
def draw(self, context):
@@ -1860,7 +1860,7 @@ class VIEW3D_MT_edit_font(bpy.types.Menu):
layout.operator("font.style_toggle", text="Toggle Small Caps").style = 'SMALL_CAPS'
-class VIEW3D_MT_edit_text_chars(bpy.types.Menu):
+class VIEW3D_MT_edit_text_chars(Menu):
bl_label = "Special Characters"
def draw(self, context):
@@ -1894,7 +1894,7 @@ class VIEW3D_MT_edit_text_chars(bpy.types.Menu):
layout.operator("font.text_insert", text="Spanish Exclamation Mark|Alt !").text = b'\xC2\xA1'.decode()
-class VIEW3D_MT_edit_meta(bpy.types.Menu):
+class VIEW3D_MT_edit_meta(Menu):
bl_label = "Metaball"
def draw(self, context):
@@ -1927,7 +1927,7 @@ class VIEW3D_MT_edit_meta(bpy.types.Menu):
layout.menu("VIEW3D_MT_edit_meta_showhide")
-class VIEW3D_MT_edit_meta_showhide(bpy.types.Menu):
+class VIEW3D_MT_edit_meta_showhide(Menu):
bl_label = "Show/Hide"
def draw(self, context):
@@ -1938,7 +1938,7 @@ class VIEW3D_MT_edit_meta_showhide(bpy.types.Menu):
layout.operator("mball.hide_metaelems", text="Hide Unselected").unselected = True
-class VIEW3D_MT_edit_lattice(bpy.types.Menu):
+class VIEW3D_MT_edit_lattice(Menu):
bl_label = "Lattice"
def draw(self, context):
@@ -1960,7 +1960,7 @@ class VIEW3D_MT_edit_lattice(bpy.types.Menu):
layout.prop_menu_enum(settings, "proportional_edit_falloff")
-class VIEW3D_MT_edit_armature(bpy.types.Menu):
+class VIEW3D_MT_edit_armature(Menu):
bl_label = "Armature"
def draw(self, context):
@@ -2015,7 +2015,7 @@ class VIEW3D_MT_edit_armature(bpy.types.Menu):
layout.menu("VIEW3D_MT_bone_options_toggle", text="Bone Settings")
-class VIEW3D_MT_armature_specials(bpy.types.Menu):
+class VIEW3D_MT_armature_specials(Menu):
bl_label = "Specials"
def draw(self, context):
@@ -2035,7 +2035,7 @@ class VIEW3D_MT_armature_specials(bpy.types.Menu):
layout.operator("armature.flip_names", text="Flip Names")
-class VIEW3D_MT_edit_armature_parent(bpy.types.Menu):
+class VIEW3D_MT_edit_armature_parent(Menu):
bl_label = "Parent"
def draw(self, context):
@@ -2045,7 +2045,7 @@ class VIEW3D_MT_edit_armature_parent(bpy.types.Menu):
layout.operator("armature.parent_clear", text="Clear")
-class VIEW3D_MT_edit_armature_roll(bpy.types.Menu):
+class VIEW3D_MT_edit_armature_roll(Menu):
bl_label = "Bone Roll"
def draw(self, context):
@@ -2060,7 +2060,7 @@ class VIEW3D_MT_edit_armature_roll(bpy.types.Menu):
# ********** Panel **********
-class VIEW3D_PT_view3d_properties(bpy.types.Panel):
+class VIEW3D_PT_view3d_properties(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "View"
@@ -2101,7 +2101,7 @@ class VIEW3D_PT_view3d_properties(bpy.types.Panel):
layout.column().prop(view, "cursor_location")
-class VIEW3D_PT_view3d_name(bpy.types.Panel):
+class VIEW3D_PT_view3d_name(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Item"
@@ -2126,7 +2126,7 @@ class VIEW3D_PT_view3d_name(bpy.types.Panel):
row.prop(bone, "name", text="")
-class VIEW3D_PT_view3d_display(bpy.types.Panel):
+class VIEW3D_PT_view3d_display(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Display"
@@ -2198,7 +2198,7 @@ class VIEW3D_PT_view3d_display(bpy.types.Panel):
row.prop(region, "use_box_clip")
-class VIEW3D_PT_view3d_meshdisplay(bpy.types.Panel):
+class VIEW3D_PT_view3d_meshdisplay(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Mesh Display"
@@ -2235,7 +2235,7 @@ class VIEW3D_PT_view3d_meshdisplay(bpy.types.Panel):
col.prop(mesh, "show_extra_face_area")
-class VIEW3D_PT_view3d_curvedisplay(bpy.types.Panel):
+class VIEW3D_PT_view3d_curvedisplay(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Curve Display"
@@ -2257,7 +2257,7 @@ class VIEW3D_PT_view3d_curvedisplay(bpy.types.Panel):
col.prop(context.scene.tool_settings, "normal_size", text="Normal Size")
-class VIEW3D_PT_background_image(bpy.types.Panel):
+class VIEW3D_PT_background_image(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Background Images"
@@ -2310,7 +2310,7 @@ class VIEW3D_PT_background_image(bpy.types.Panel):
row.prop(bg, "offset_y", text="Y")
-class VIEW3D_PT_transform_orientations(bpy.types.Panel):
+class VIEW3D_PT_transform_orientations(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Transform Orientations"
@@ -2338,7 +2338,7 @@ class VIEW3D_PT_transform_orientations(bpy.types.Panel):
col.operator("transform.delete_orientation", text="Delete")
-class VIEW3D_PT_etch_a_ton(bpy.types.Panel):
+class VIEW3D_PT_etch_a_ton(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Skeleton Sketching"
@@ -2383,7 +2383,7 @@ class VIEW3D_PT_etch_a_ton(bpy.types.Panel):
col.operator("sketch.convert", text="Convert")
-class VIEW3D_PT_context_properties(bpy.types.Panel):
+class VIEW3D_PT_context_properties(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_label = "Properties"
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index 85dd6f7da5e..864d59f0cdb 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
+from bpy.types import Menu, Panel
class View3DPanel():
@@ -61,7 +62,7 @@ def draw_gpencil_tools(context, layout):
# ********** default tools for objectmode ****************
-class VIEW3D_PT_tools_objectmode(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_objectmode(View3DPanel, Panel):
bl_context = "objectmode"
bl_label = "Object Tools"
@@ -106,7 +107,7 @@ class VIEW3D_PT_tools_objectmode(View3DPanel, bpy.types.Panel):
# ********** default tools for editmode_mesh ****************
-class VIEW3D_PT_tools_meshedit(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_meshedit(View3DPanel, Panel):
bl_context = "mesh_edit"
bl_label = "Mesh Tools"
@@ -165,7 +166,7 @@ class VIEW3D_PT_tools_meshedit(View3DPanel, bpy.types.Panel):
draw_gpencil_tools(context, layout)
-class VIEW3D_PT_tools_meshedit_options(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_meshedit_options(View3DPanel, Panel):
bl_context = "mesh_edit"
bl_label = "Mesh Options"
@@ -191,7 +192,7 @@ class VIEW3D_PT_tools_meshedit_options(View3DPanel, bpy.types.Panel):
# ********** default tools for editmode_curve ****************
-class VIEW3D_PT_tools_curveedit(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_curveedit(View3DPanel, Panel):
bl_context = "curve_edit"
bl_label = "Curve Tools"
@@ -237,7 +238,7 @@ class VIEW3D_PT_tools_curveedit(View3DPanel, bpy.types.Panel):
# ********** default tools for editmode_surface ****************
-class VIEW3D_PT_tools_surfaceedit(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_surfaceedit(View3DPanel, Panel):
bl_context = "surface_edit"
bl_label = "Surface Tools"
@@ -269,7 +270,7 @@ class VIEW3D_PT_tools_surfaceedit(View3DPanel, bpy.types.Panel):
# ********** default tools for editmode_text ****************
-class VIEW3D_PT_tools_textedit(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_textedit(View3DPanel, Panel):
bl_context = "text_edit"
bl_label = "Text Tools"
@@ -299,7 +300,7 @@ class VIEW3D_PT_tools_textedit(View3DPanel, bpy.types.Panel):
# ********** default tools for editmode_armature ****************
-class VIEW3D_PT_tools_armatureedit(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_armatureedit(View3DPanel, Panel):
bl_context = "armature_edit"
bl_label = "Armature Tools"
@@ -328,7 +329,7 @@ class VIEW3D_PT_tools_armatureedit(View3DPanel, bpy.types.Panel):
draw_gpencil_tools(context, layout)
-class VIEW3D_PT_tools_armatureedit_options(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_armatureedit_options(View3DPanel, Panel):
bl_context = "armature_edit"
bl_label = "Armature Options"
@@ -340,7 +341,7 @@ class VIEW3D_PT_tools_armatureedit_options(View3DPanel, bpy.types.Panel):
# ********** default tools for editmode_mball ****************
-class VIEW3D_PT_tools_mballedit(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_mballedit(View3DPanel, Panel):
bl_context = "mball_edit"
bl_label = "Meta Tools"
@@ -360,7 +361,7 @@ class VIEW3D_PT_tools_mballedit(View3DPanel, bpy.types.Panel):
# ********** default tools for editmode_lattice ****************
-class VIEW3D_PT_tools_latticeedit(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_latticeedit(View3DPanel, Panel):
bl_context = "lattice_edit"
bl_label = "Lattice Tools"
@@ -384,7 +385,7 @@ class VIEW3D_PT_tools_latticeedit(View3DPanel, bpy.types.Panel):
# ********** default tools for posemode ****************
-class VIEW3D_PT_tools_posemode(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_posemode(View3DPanel, Panel):
bl_context = "posemode"
bl_label = "Pose Tools"
@@ -425,7 +426,7 @@ class VIEW3D_PT_tools_posemode(View3DPanel, bpy.types.Panel):
draw_gpencil_tools(context, layout)
-class VIEW3D_PT_tools_posemode_options(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_posemode_options(View3DPanel, Panel):
bl_context = "posemode"
bl_label = "Pose Options"
@@ -459,7 +460,7 @@ class PaintPanel():
return None
-class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_brush(PaintPanel, Panel):
bl_label = "Brush"
@classmethod
@@ -677,7 +678,7 @@ class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel):
#row.prop(brush, "use_pressure_jitter", toggle=True, text="")
-class VIEW3D_PT_tools_brush_texture(PaintPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_brush_texture(PaintPanel, Panel):
bl_label = "Texture"
bl_options = {'DEFAULT_CLOSED'}
@@ -775,7 +776,7 @@ class VIEW3D_PT_tools_brush_texture(PaintPanel, bpy.types.Panel):
col.active = tex_slot.map_mode in {'FIXED', 'TILED'} and brush.use_texture_overlay
-class VIEW3D_PT_tools_brush_tool(PaintPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_brush_tool(PaintPanel, Panel):
bl_label = "Tool"
bl_options = {'DEFAULT_CLOSED'}
@@ -809,7 +810,7 @@ class VIEW3D_PT_tools_brush_tool(PaintPanel, bpy.types.Panel):
row.prop(brush, "use_paint_image", text="", icon='TPAINT_HLT')
-class VIEW3D_PT_tools_brush_stroke(PaintPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_brush_stroke(PaintPanel, Panel):
bl_label = "Stroke"
bl_options = {'DEFAULT_CLOSED'}
@@ -907,7 +908,7 @@ class VIEW3D_PT_tools_brush_stroke(PaintPanel, bpy.types.Panel):
# row.prop(brush, "use_pressure_spacing", toggle=True, text="")
-class VIEW3D_PT_tools_brush_curve(PaintPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_brush_curve(PaintPanel, Panel):
bl_label = "Curve"
bl_options = {'DEFAULT_CLOSED'}
@@ -934,7 +935,7 @@ class VIEW3D_PT_tools_brush_curve(PaintPanel, bpy.types.Panel):
row.operator("brush.curve_preset", icon="NOCURVE", text="").shape = 'MAX'
-class VIEW3D_PT_sculpt_options(PaintPanel, bpy.types.Panel):
+class VIEW3D_PT_sculpt_options(PaintPanel, Panel):
bl_label = "Options"
bl_options = {'DEFAULT_CLOSED'}
@@ -964,7 +965,7 @@ class VIEW3D_PT_sculpt_options(PaintPanel, bpy.types.Panel):
layout.prop(tool_settings, "sculpt_paint_use_unified_strength", text="Strength")
-class VIEW3D_PT_sculpt_symmetry(PaintPanel, bpy.types.Panel):
+class VIEW3D_PT_sculpt_symmetry(PaintPanel, Panel):
bl_label = "Symmetry"
bl_options = {'DEFAULT_CLOSED'}
@@ -992,7 +993,7 @@ class VIEW3D_PT_sculpt_symmetry(PaintPanel, bpy.types.Panel):
layout.prop(sculpt, "use_symmetry_feather", text="Feather")
-class VIEW3D_PT_tools_brush_appearance(PaintPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_brush_appearance(PaintPanel, Panel):
bl_label = "Appearance"
bl_options = {'DEFAULT_CLOSED'}
@@ -1038,7 +1039,7 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel, bpy.types.Panel):
# ********** default tools for weightpaint ****************
-class VIEW3D_PT_tools_weightpaint(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_weightpaint(View3DPanel, Panel):
bl_context = "weightpaint"
bl_label = "Weight Tools"
@@ -1056,7 +1057,7 @@ class VIEW3D_PT_tools_weightpaint(View3DPanel, bpy.types.Panel):
col.operator("object.vertex_group_levels", text="Levels")
-class VIEW3D_PT_tools_weightpaint_options(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_weightpaint_options(View3DPanel, Panel):
bl_context = "weightpaint"
bl_label = "Options"
@@ -1093,7 +1094,7 @@ class VIEW3D_PT_tools_weightpaint_options(View3DPanel, bpy.types.Panel):
# ********** default tools for vertexpaint ****************
-class VIEW3D_PT_tools_vertexpaint(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_vertexpaint(View3DPanel, Panel):
bl_context = "vertexpaint"
bl_label = "Options"
@@ -1122,7 +1123,7 @@ class VIEW3D_PT_tools_vertexpaint(View3DPanel, bpy.types.Panel):
# ********** default tools for texturepaint ****************
-class VIEW3D_PT_tools_projectpaint(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_projectpaint(View3DPanel, Panel):
bl_context = "imagepaint"
bl_label = "Project Paint"
@@ -1214,7 +1215,7 @@ class VIEW3D_PT_imagepaint_options(PaintPanel):
col.prop(tool_settings, "sculpt_paint_use_unified_strength", text="Strength")
-class VIEW3D_MT_tools_projectpaint_clone(bpy.types.Menu):
+class VIEW3D_MT_tools_projectpaint_clone(Menu):
bl_label = "Clone Layer"
def draw(self, context):
@@ -1225,7 +1226,7 @@ class VIEW3D_MT_tools_projectpaint_clone(bpy.types.Menu):
prop.value = i
-class VIEW3D_MT_tools_projectpaint_stencil(bpy.types.Menu):
+class VIEW3D_MT_tools_projectpaint_stencil(Menu):
bl_label = "Mask Layer"
def draw(self, context):
@@ -1236,7 +1237,7 @@ class VIEW3D_MT_tools_projectpaint_stencil(bpy.types.Menu):
prop.value = i
-class VIEW3D_PT_tools_particlemode(View3DPanel, bpy.types.Panel):
+class VIEW3D_PT_tools_particlemode(View3DPanel, Panel):
'''default tools for particle mode'''
bl_context = "particlemode"
bl_label = "Options"
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 55ade5fe5d9..46b533f33fd 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -526,7 +526,7 @@ void weight_to_rgb(float input, float *fr, float *fg, float *fb);
typedef struct DMVertexAttribs {
struct {
struct MTFace *array;
- int emOffset, glIndex;
+ int emOffset, glIndex, glTexco;
} tface[MAX_MTFACE];
struct {
@@ -541,7 +541,7 @@ typedef struct DMVertexAttribs {
struct {
float (*array)[3];
- int emOffset, glIndex;
+ int emOffset, glIndex, glTexco;
} orco;
int tottface, totmcol, tottang, totorco;
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index 88dad03db1e..162b0de1d5a 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -53,7 +53,7 @@ extern "C" {
/* can be left blank, otherwise a,b,c... etc with no quotes */
#define BLENDER_VERSION_CHAR
/* alpha/beta/rc/release, docs use this */
-#define BLENDER_VERSION_CYCLE release
+#define BLENDER_VERSION_CYCLE alpha
struct ListBase;
struct MemFile;
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 648e67cad8a..28950e4b2eb 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -101,6 +101,7 @@ typedef enum {
typedef void (*ObjectWalkFunc)(void *userData, struct Object *ob, struct Object **obpoin);
typedef void (*IDWalkFunc)(void *userData, struct Object *ob, struct ID **idpoin);
+typedef void (*TexWalkFunc)(void *userData, struct Object *ob, struct ModifierData *md, const char *propname);
typedef struct ModifierTypeInfo {
/* The user visible name for this modifier */
@@ -284,6 +285,16 @@ typedef struct ModifierTypeInfo {
*/
void (*foreachIDLink)(struct ModifierData *md, struct Object *ob,
IDWalkFunc walk, void *userData);
+
+ /* Should call the given walk function for each texture that the
+ * modifier data stores. This is used for finding all textures in
+ * the context for the UI.
+ *
+ * This function is optional. If it is not present, it will be
+ * assumed the modifier has no textures.
+ */
+ void (*foreachTexLink)(struct ModifierData *md, struct Object *ob,
+ TexWalkFunc walk, void *userData);
} ModifierTypeInfo;
ModifierTypeInfo *modifierType_getInfo (ModifierType type);
@@ -315,6 +326,10 @@ void modifiers_foreachObjectLink(struct Object *ob,
void modifiers_foreachIDLink(struct Object *ob,
IDWalkFunc walk,
void *userData);
+void modifiers_foreachTexLink(struct Object *ob,
+ TexWalkFunc walk,
+ void *userData);
+
struct ModifierData *modifiers_findByType(struct Object *ob, ModifierType type);
struct ModifierData *modifiers_findByName(struct Object *ob, const char *name);
void modifiers_clearErrors(struct Object *ob);
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 62b8830de20..c84bcaabbd3 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -1050,6 +1050,7 @@ static void emDM_drawMappedFacesGLSL(DerivedMesh *dm,
glEnd();
}
}
+#undef PASSATTRIB
}
static void emDM_drawFacesGLSL(DerivedMesh *dm,
@@ -2767,6 +2768,7 @@ void DM_vertex_attributes_from_gpu(DerivedMesh *dm, GPUVertexAttribs *gattribs,
attribs->tface[a].array = tfdata->layers[layer].data;
attribs->tface[a].emOffset = tfdata->layers[layer].offset;
attribs->tface[a].glIndex = gattribs->layer[b].glindex;
+ attribs->tface[a].glTexco = gattribs->layer[b].gltexco;
}
}
else if(gattribs->layer[b].type == CD_MCOL) {
@@ -2807,6 +2809,7 @@ void DM_vertex_attributes_from_gpu(DerivedMesh *dm, GPUVertexAttribs *gattribs,
attribs->orco.array = vdata->layers[layer].data;
attribs->orco.emOffset = vdata->layers[layer].offset;
attribs->orco.glIndex = gattribs->layer[b].glindex;
+ attribs->orco.glTexco = gattribs->layer[b].gltexco;
}
}
}
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 662c872b7f1..12fb11c68b3 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -993,6 +993,50 @@ static void cdDM_drawMappedFacesTex(DerivedMesh *dm, int (*setDrawOptions)(void
cdDM_drawFacesTex_common(dm, NULL, setDrawOptions, userData);
}
+static void cddm_draw_attrib_vertex(DMVertexAttribs *attribs, MVert *mvert, int a, int index, int vert, int smoothnormal)
+{
+ int b;
+
+ /* orco texture coordinates */
+ if(attribs->totorco) {
+ if(attribs->orco.glTexco)
+ glTexCoord3fv(attribs->orco.array[index]);
+ else
+ glVertexAttrib3fvARB(attribs->orco.glIndex, attribs->orco.array[index]);
+ }
+
+ /* uv texture coordinates */
+ for(b = 0; b < attribs->tottface; b++) {
+ MTFace *tf = &attribs->tface[b].array[a];
+
+ if(attribs->tface[b].glTexco)
+ glTexCoord2fv(tf->uv[vert]);
+ else
+ glVertexAttrib2fvARB(attribs->tface[b].glIndex, tf->uv[vert]);
+ }
+
+ /* vertex colors */
+ for(b = 0; b < attribs->totmcol; b++) {
+ MCol *cp = &attribs->mcol[b].array[a*4 + vert];
+ GLubyte col[4];
+ col[0]= cp->b; col[1]= cp->g; col[2]= cp->r; col[3]= cp->a;
+ glVertexAttrib4ubvARB(attribs->mcol[b].glIndex, col);
+ }
+
+ /* tangent for normal mapping */
+ if(attribs->tottang) {
+ float *tang = attribs->tang.array[a*4 + vert];
+ glVertexAttrib4fvARB(attribs->tang.glIndex, tang);
+ }
+
+ /* vertex normal */
+ if(smoothnormal)
+ glNormal3sv(mvert[index].no);
+
+ /* vertex coordinate */
+ glVertex3fv(mvert[index].co);
+}
+
static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, void *attribs), int (*setDrawOptions)(void *userData, int index), void *userData)
{
CDDerivedMesh *cddm = (CDDerivedMesh*) dm;
@@ -1083,37 +1127,14 @@ static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, vo
}
}
-#define PASSVERT(index, vert) { \
- if(attribs.totorco) \
- glVertexAttrib3fvARB(attribs.orco.glIndex, attribs.orco.array[index]); \
- for(b = 0; b < attribs.tottface; b++) { \
- MTFace *tf = &attribs.tface[b].array[a]; \
- glVertexAttrib2fvARB(attribs.tface[b].glIndex, tf->uv[vert]); \
- } \
- for(b = 0; b < attribs.totmcol; b++) { \
- MCol *cp = &attribs.mcol[b].array[a*4 + vert]; \
- GLubyte col[4]; \
- col[0]= cp->b; col[1]= cp->g; col[2]= cp->r; col[3]= cp->a; \
- glVertexAttrib4ubvARB(attribs.mcol[b].glIndex, col); \
- } \
- if(attribs.tottang) { \
- float *tang = attribs.tang.array[a*4 + vert]; \
- glVertexAttrib4fvARB(attribs.tang.glIndex, tang); \
- } \
- if(smoothnormal) \
- glNormal3sv(mvert[index].no); \
- glVertex3fv(mvert[index].co); \
- }
+ cddm_draw_attrib_vertex(&attribs, mvert, a, mface->v1, 0, smoothnormal);
+ cddm_draw_attrib_vertex(&attribs, mvert, a, mface->v2, 1, smoothnormal);
+ cddm_draw_attrib_vertex(&attribs, mvert, a, mface->v3, 2, smoothnormal);
- PASSVERT(mface->v1, 0);
- PASSVERT(mface->v2, 1);
- PASSVERT(mface->v3, 2);
if(mface->v4)
- PASSVERT(mface->v4, 3)
+ cddm_draw_attrib_vertex(&attribs, mvert, a, mface->v4, 3, smoothnormal);
else
- PASSVERT(mface->v3, 2)
-
-#undef PASSVERT
+ cddm_draw_attrib_vertex(&attribs, mvert, a, mface->v3, 2, smoothnormal);
}
glEnd();
}
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 6083151f23f..4802601307a 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -301,6 +301,7 @@ static void dag_add_driver_relation(AnimData *adt, DagForest *dag, DagNode *node
for (fcu= adt->drivers.first; fcu; fcu= fcu->next) {
ChannelDriver *driver= fcu->driver;
DriverVar *dvar;
+ int isdata_fcu = isdata || (fcu->rna_path && strstr(fcu->rna_path, "modifiers["));
/* loop over variables to get the target relationships */
for (dvar= driver->variables.first; dvar; dvar= dvar->next) {
@@ -320,14 +321,14 @@ static void dag_add_driver_relation(AnimData *adt, DagForest *dag, DagNode *node
( ((dtar->rna_path) && strstr(dtar->rna_path, "pose.bones[")) ||
((dtar->flag & DTAR_FLAG_STRUCT_REF) && (dtar->pchan_name[0])) ))
{
- dag_add_relation(dag, node1, node, isdata?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Driver");
+ dag_add_relation(dag, node1, node, isdata_fcu?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Driver");
}
/* check if ob data */
else if (dtar->rna_path && strstr(dtar->rna_path, "data."))
- dag_add_relation(dag, node1, node, isdata?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Driver");
+ dag_add_relation(dag, node1, node, isdata_fcu?DAG_RL_DATA_DATA:DAG_RL_DATA_OB, "Driver");
/* normal */
else
- dag_add_relation(dag, node1, node, isdata?DAG_RL_OB_DATA:DAG_RL_OB_OB, "Driver");
+ dag_add_relation(dag, node1, node, isdata_fcu?DAG_RL_OB_DATA:DAG_RL_OB_OB, "Driver");
}
}
}
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index 8f57490d057..c2ed6468643 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -1369,6 +1369,11 @@ void makeDispListCurveTypes(Scene *scene, Object *ob, int forOrco)
Curve *cu= ob->data;
ListBase *dispbase;
+ /* The same check for duplis as in do_makeDispListCurveTypes.
+ Happens when curve used for constraint/bevel was converted to mesh.
+ check there is still needed for render displist and orco displists. */
+ if(!ELEM3(ob->type, OB_SURF, OB_CURVE, OB_FONT)) return;
+
freedisplist(&(ob->disp));
dispbase= &(ob->disp);
freedisplist(dispbase);
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index 2e532222d5b..3916d0ca701 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -1003,7 +1003,7 @@ static float dtar_get_prop_val (ChannelDriver *driver, DriverTarget *dtar)
/* get property to read from, and get value as appropriate */
if (RNA_path_resolve_full(&id_ptr, dtar->rna_path, &ptr, &prop, &index)) {
- if(RNA_property_array_check(&ptr, prop)) {
+ if(RNA_property_array_check(prop)) {
/* array */
if (index < RNA_property_array_length(&ptr, prop)) {
switch (RNA_property_type(prop)) {
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 51f1cd61e7c..fe26c0ccd2d 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -195,6 +195,18 @@ void modifiers_foreachIDLink(Object *ob, IDWalkFunc walk, void *userData)
}
}
+void modifiers_foreachTexLink(Object *ob, TexWalkFunc walk, void *userData)
+{
+ ModifierData *md = ob->modifiers.first;
+
+ for (; md; md=md->next) {
+ ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+
+ if(mti->foreachTexLink)
+ mti->foreachTexLink(md, ob, walk, userData);
+ }
+}
+
void modifier_copyData(ModifierData *md, ModifierData *target)
{
ModifierTypeInfo *mti = modifierType_getInfo(md->type);
diff --git a/source/blender/blenkernel/intern/nla.c b/source/blender/blenkernel/intern/nla.c
index 463f3bdd5cb..0235724c69c 100644
--- a/source/blender/blenkernel/intern/nla.c
+++ b/source/blender/blenkernel/intern/nla.c
@@ -1620,7 +1620,7 @@ void BKE_nla_tweakmode_exit (AnimData *adt)
/* Baking Tools ------------------------------------------- */
-static void BKE_nla_bake (Scene *scene, ID *UNUSED(id), AnimData *adt, int UNUSED(flag))
+static void UNUSED_FUNCTION(BKE_nla_bake) (Scene *scene, ID *UNUSED(id), AnimData *adt, int UNUSED(flag))
{
/* verify that data is valid
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 13469e0b58b..5f1a6c911bc 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -3243,7 +3243,7 @@ static int node_animation_properties(bNodeTree *ntree, bNode *node)
int driven, len=1, index;
prop = (PropertyRNA *)link;
- if (RNA_property_array_check(&ptr, prop))
+ if (RNA_property_array_check(prop))
len = RNA_property_array_length(&ptr, prop);
for (index=0; index<len; index++) {
@@ -3261,7 +3261,7 @@ static int node_animation_properties(bNodeTree *ntree, bNode *node)
RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, sock, &ptr);
prop = RNA_struct_find_property(&ptr, "default_value");
- if (RNA_property_array_check(&ptr, prop))
+ if (RNA_property_array_check(prop))
len = RNA_property_array_length(&ptr, prop);
for (index=0; index<len; index++) {
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 93e0c920745..4cec086aad4 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -699,6 +699,7 @@ void reload_sequence_new_file(Scene *scene, Sequence * seq, int lock_range)
seq->len = 0;
}
seq->strip->len = seq->len;
+ break;
case SEQ_SOUND:
#ifdef WITH_AUDASPACE
if(!seq->sound)
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index 036ba34d0c8..493baebd197 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -1005,7 +1005,7 @@ void autotexname(Tex *tex)
Tex *give_current_object_texture(Object *ob)
{
- Material *ma;
+ Material *ma, *node_ma;
Tex *tex= NULL;
if(ob==NULL) return NULL;
@@ -1015,6 +1015,10 @@ Tex *give_current_object_texture(Object *ob)
tex= give_current_lamp_texture(ob->data);
} else {
ma= give_current_material(ob, ob->actcol);
+
+ if((node_ma=give_node_material(ma)))
+ ma= node_ma;
+
tex= give_current_material_texture(ma);
}
@@ -1080,17 +1084,6 @@ Tex *give_current_material_texture(Material *ma)
tex= (Tex *)node->id;
ma= NULL;
}
- else {
- node= nodeGetActiveID(ma->nodetree, ID_MA);
- if(node) {
- ma= (Material*)node->id;
- if(ma) {
- mtex= ma->mtex[(int)(ma->texact)];
- if(mtex) tex= mtex->tex;
- }
- }
- }
- return tex;
}
if(ma) {
@@ -1165,11 +1158,6 @@ void set_current_material_texture(Material *ma, Tex *newtex)
id_us_plus(&newtex->id);
ma= NULL;
}
- else {
- node= nodeGetActiveID(ma->nodetree, ID_MA);
- if(node)
- ma= (Material*)node->id;
- }
}
if(ma) {
int act= (int)ma->texact;
@@ -1198,16 +1186,8 @@ int has_current_material_texture(Material *ma)
if(ma && ma->use_nodes && ma->nodetree) {
node= nodeGetActiveID(ma->nodetree, ID_TE);
- if(node) {
+ if(node)
return 1;
- }
- else {
- node= nodeGetActiveID(ma->nodetree, ID_MA);
- if(node)
- ma= (Material*)node->id;
- else
- ma= NULL;
- }
}
return (ma != NULL);
diff --git a/source/blender/blenlib/BLI_ghash.h b/source/blender/blenlib/BLI_ghash.h
index dcc71fa1258..e4afc6ad79b 100644
--- a/source/blender/blenlib/BLI_ghash.h
+++ b/source/blender/blenlib/BLI_ghash.h
@@ -53,14 +53,14 @@ typedef void (*GHashValFreeFP) (void *val);
typedef struct Entry {
struct Entry *next;
-
+
void *key, *val;
} Entry;
typedef struct GHash {
GHashHashFP hashfp;
GHashCmpFP cmpfp;
-
+
Entry **buckets;
struct BLI_mempool *entrypool;
int nbuckets, nentries, cursize;
@@ -72,15 +72,15 @@ typedef struct GHashIterator {
struct Entry *curEntry;
} GHashIterator;
-GHash* BLI_ghash_new (GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info);
-void BLI_ghash_free (GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp);
-
-//BM_INLINE void BLI_ghash_insert (GHash *gh, void *key, void *val);
-//BM_INLINE int BLI_ghash_remove (GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp);
-//BM_INLINE void* BLI_ghash_lookup (GHash *gh, void *key);
-//BM_INLINE int BLI_ghash_haskey (GHash *gh, void *key);
+/* *** */
-int BLI_ghash_size (GHash *gh);
+GHash* BLI_ghash_new (GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info);
+void BLI_ghash_free (GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp);
+void BLI_ghash_insert(GHash *gh, void *key, void *val);
+void * BLI_ghash_lookup(GHash *gh, const void *key);
+int BLI_ghash_remove(GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp);
+int BLI_ghash_haskey(GHash *gh, void *key);
+int BLI_ghash_size (GHash *gh);
/* *** */
@@ -149,127 +149,10 @@ unsigned int BLI_ghashutil_strhash (const void *key);
int BLI_ghashutil_strcmp (const void *a, const void *b);
unsigned int BLI_ghashutil_inthash (const void *ptr);
-int BLI_ghashutil_intcmp(const void *a, const void *b);
-
-/*begin of macro-inlined functions*/
-extern unsigned int hashsizes[];
-
-#if 0
-#define BLI_ghash_insert(gh, _k, _v){\
- unsigned int _hash= (gh)->hashfp(_k)%gh->nbuckets;\
- Entry *_e= BLI_mempool_alloc((gh)->entrypool);\
- _e->key= _k;\
- _e->val= _v;\
- _e->next= (gh)->buckets[_hash];\
- (gh)->buckets[_hash]= _e;\
- if (++(gh)->nentries>(gh)->nbuckets*3) {\
- Entry *_e, **_old= (gh)->buckets;\
- int _i, _nold= (gh)->nbuckets;\
- (gh)->nbuckets= hashsizes[++(gh)->cursize];\
- (gh)->buckets= malloc((gh)->nbuckets*sizeof(*(gh)->buckets));\
- memset((gh)->buckets, 0, (gh)->nbuckets*sizeof(*(gh)->buckets));\
- for (_i=0; _i<_nold; _i++) {\
- for (_e= _old[_i]; _e;) {\
- Entry *_n= _e->next;\
- _hash= (gh)->hashfp(_e->key)%(gh)->nbuckets;\
- _e->next= (gh)->buckets[_hash];\
- (gh)->buckets[_hash]= _e;\
- _e= _n;\
- }\
- }\
- free(_old); } }
-#endif
-
-/*---------inlined functions---------*/
-BM_INLINE void BLI_ghash_insert(GHash *gh, void *key, void *val) {
- unsigned int hash= gh->hashfp(key)%gh->nbuckets;
- Entry *e= (Entry*) BLI_mempool_alloc(gh->entrypool);
-
- e->key= key;
- e->val= val;
- e->next= gh->buckets[hash];
- gh->buckets[hash]= e;
-
- if (++gh->nentries>(float)gh->nbuckets/2) {
- Entry **old= gh->buckets;
- int i, nold= gh->nbuckets;
-
- gh->nbuckets= hashsizes[++gh->cursize];
- gh->buckets= (Entry**)MEM_mallocN(gh->nbuckets*sizeof(*gh->buckets), "buckets");
- memset(gh->buckets, 0, gh->nbuckets*sizeof(*gh->buckets));
-
- for (i=0; i<nold; i++) {
- for (e= old[i]; e;) {
- Entry *n= e->next;
-
- hash= gh->hashfp(e->key)%gh->nbuckets;
- e->next= gh->buckets[hash];
- gh->buckets[hash]= e;
-
- e= n;
- }
- }
-
- MEM_freeN(old);
- }
-}
-
-BM_INLINE void* BLI_ghash_lookup(GHash *gh, const void *key)
-{
- if(gh) {
- unsigned int hash= gh->hashfp(key)%gh->nbuckets;
- Entry *e;
-
- for (e= gh->buckets[hash]; e; e= e->next)
- if (gh->cmpfp(key, e->key)==0)
- return e->val;
- }
- return NULL;
-}
-
-BM_INLINE int BLI_ghash_remove (GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
-{
- unsigned int hash= gh->hashfp(key)%gh->nbuckets;
- Entry *e;
- Entry *p = NULL;
-
- for (e= gh->buckets[hash]; e; e= e->next) {
- if (gh->cmpfp(key, e->key)==0) {
- Entry *n= e->next;
-
- if (keyfreefp) keyfreefp(e->key);
- if (valfreefp) valfreefp(e->val);
- BLI_mempool_free(gh->entrypool, e);
-
-
- e= n;
- if (p)
- p->next = n;
- else
- gh->buckets[hash] = n;
-
- --gh->nentries;
- return 1;
- }
- p = e;
- }
-
- return 0;
-}
-
-BM_INLINE int BLI_ghash_haskey(GHash *gh, void *key) {
- unsigned int hash= gh->hashfp(key)%gh->nbuckets;
- Entry *e;
-
- for (e= gh->buckets[hash]; e; e= e->next)
- if (gh->cmpfp(key, e->key)==0)
- return 1;
-
- return 0;
-}
+int BLI_ghashutil_intcmp (const void *a, const void *b);
#ifdef __cplusplus
}
#endif
-#endif
+#endif /* BLI_GHASH_H */
diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h
index 9af55601ff7..28ebb254f2a 100644
--- a/source/blender/blenlib/BLI_utildefines.h
+++ b/source/blender/blenlib/BLI_utildefines.h
@@ -184,6 +184,12 @@
#endif
#ifdef __GNUC__
+# define UNUSED_FUNCTION(x) __attribute__((__unused__)) UNUSED_ ## x
+#else
+# define UNUSED_FUNCTION(x) UNUSED_ ## x
+#endif
+
+#ifdef __GNUC__
# define WARN_UNUSED __attribute__((warn_unused_result))
#else
# define WARN_UNUSED
diff --git a/source/blender/blenlib/intern/BLI_ghash.c b/source/blender/blenlib/intern/BLI_ghash.c
index ff08ef4dba9..bfee350037a 100644
--- a/source/blender/blenlib/intern/BLI_ghash.c
+++ b/source/blender/blenlib/intern/BLI_ghash.c
@@ -49,8 +49,6 @@ unsigned int hashsizes[]= {
/***/
-/***/
-
GHash *BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info) {
GHash *gh= MEM_mallocN(sizeof(*gh), info);
gh->hashfp= hashfp;
@@ -67,14 +65,96 @@ GHash *BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info) {
return gh;
}
-#ifdef BLI_ghash_insert
-#undef BLI_ghash_insert
-#endif
-
int BLI_ghash_size(GHash *gh) {
return gh->nentries;
}
+void BLI_ghash_insert(GHash *gh, void *key, void *val) {
+ unsigned int hash= gh->hashfp(key)%gh->nbuckets;
+ Entry *e= (Entry*) BLI_mempool_alloc(gh->entrypool);
+
+ e->key= key;
+ e->val= val;
+ e->next= gh->buckets[hash];
+ gh->buckets[hash]= e;
+
+ if (++gh->nentries>(float)gh->nbuckets/2) {
+ Entry **old= gh->buckets;
+ int i, nold= gh->nbuckets;
+
+ gh->nbuckets= hashsizes[++gh->cursize];
+ gh->buckets= (Entry**)MEM_mallocN(gh->nbuckets*sizeof(*gh->buckets), "buckets");
+ memset(gh->buckets, 0, gh->nbuckets*sizeof(*gh->buckets));
+
+ for (i=0; i<nold; i++) {
+ for (e= old[i]; e;) {
+ Entry *n= e->next;
+
+ hash= gh->hashfp(e->key)%gh->nbuckets;
+ e->next= gh->buckets[hash];
+ gh->buckets[hash]= e;
+
+ e= n;
+ }
+ }
+
+ MEM_freeN(old);
+ }
+}
+
+void *BLI_ghash_lookup(GHash *gh, const void *key) {
+ if(gh) {
+ unsigned int hash= gh->hashfp(key)%gh->nbuckets;
+ Entry *e;
+
+ for (e= gh->buckets[hash]; e; e= e->next)
+ if (gh->cmpfp(key, e->key)==0)
+ return e->val;
+ }
+ return NULL;
+}
+
+int BLI_ghash_remove (GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
+{
+ unsigned int hash= gh->hashfp(key)%gh->nbuckets;
+ Entry *e;
+ Entry *p = NULL;
+
+ for (e= gh->buckets[hash]; e; e= e->next) {
+ if (gh->cmpfp(key, e->key)==0) {
+ Entry *n= e->next;
+
+ if (keyfreefp) keyfreefp(e->key);
+ if (valfreefp) valfreefp(e->val);
+ BLI_mempool_free(gh->entrypool, e);
+
+ /* correct but 'e' isnt used before return */
+ /* e= n; */ /*UNUSED*/
+ if (p)
+ p->next = n;
+ else
+ gh->buckets[hash] = n;
+
+ --gh->nentries;
+ return 1;
+ }
+ p = e;
+ }
+
+ return 0;
+}
+
+int BLI_ghash_haskey(GHash *gh, void *key) {
+ unsigned int hash= gh->hashfp(key)%gh->nbuckets;
+ Entry *e;
+
+ for (e= gh->buckets[hash]; e; e= e->next)
+ if (gh->cmpfp(key, e->key)==0)
+ return 1;
+
+ return 0;
+}
+
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp) {
int i;
diff --git a/source/blender/editors/armature/poseSlide.c b/source/blender/editors/armature/poseSlide.c
index b3ea568abf4..3c15ff52a30 100644
--- a/source/blender/editors/armature/poseSlide.c
+++ b/source/blender/editors/armature/poseSlide.c
@@ -1035,7 +1035,7 @@ static short pose_propagate_get_refVal (Object *ob, FCurve *fcu, float *value)
/* resolve the property... */
if (RNA_path_resolve(&id_ptr, fcu->rna_path, &ptr, &prop)) {
- if (RNA_property_array_check(&ptr, prop)) {
+ if (RNA_property_array_check(prop)) {
/* array */
if (fcu->array_index < RNA_property_array_length(&ptr, prop)) {
found= TRUE;
diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index ffe2e334772..04565eab155 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -1613,7 +1613,12 @@ static int gpencil_area_exists(bContext *C, ScrArea *satest)
static int gpencil_draw_modal (bContext *C, wmOperator *op, wmEvent *event)
{
tGPsdata *p= op->customdata;
- int estate = OPERATOR_PASS_THROUGH; /* default exit state - not handled, so let others have a share of the pie */
+ //int estate = OPERATOR_PASS_THROUGH; /* default exit state - not handled, so let others have a share of the pie */
+ /* currently, grease pencil conflicts with such operators as undo and set object mode
+ which makes behavior of operator totally unpredictable and crash for some cases.
+ the only way to solve this proper is to ger rid of pointers to data which can
+ chage stored in operator custom data (sergey) */
+ int estate = OPERATOR_RUNNING_MODAL;
// if (event->type == NDOF_MOTION)
// return OPERATOR_PASS_THROUGH;
diff --git a/source/blender/editors/include/ED_node.h b/source/blender/editors/include/ED_node.h
index dfa457c22de..cc4dd6330fb 100644
--- a/source/blender/editors/include/ED_node.h
+++ b/source/blender/editors/include/ED_node.h
@@ -33,12 +33,14 @@
#ifndef ED_NODE_H
#define ED_NODE_H
+struct ID;
+struct Main;
struct Material;
struct Scene;
struct Tex;
struct bContext;
struct bNode;
-struct ID;
+struct bNodeTree;
struct ScrArea;
/* drawnode.c */
@@ -55,6 +57,8 @@ void ED_node_texture_default(struct Tex *tex);
void ED_node_link_intersect_test(struct ScrArea *sa, int test);
void ED_node_link_insert(struct ScrArea *sa);
+void ED_node_set_active(struct Main *bmain, struct bNodeTree *ntree, struct bNode *node);
+
/* node ops.c */
void ED_operatormacros_node(void);
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index 8194ad610f7..76a56598e14 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -213,7 +213,7 @@ struct uiBut {
BIFIconID icon;
char lock;
- char dt;
+ char dt; /* drawtype: UI_EMBOSS, UI_EMBOSSN ... etc, copied from the block */
char changed; /* could be made into a single flag */
unsigned char unit_type; /* so buttons can support unit systems which are not RNA */
short modifier_key;
@@ -306,7 +306,8 @@ struct uiBlock {
void *drawextra_arg2;
int flag;
- char direction, dt;
+ char direction;
+ char dt; /* drawtype: UI_EMBOSS, UI_EMBOSSN ... etc, copied to buttons */
short auto_open;
double auto_open_last;
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index df654cf3645..4810b3fdf54 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -367,7 +367,7 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, const char *name, in
unit= UI_UNIT_X*0.75;
butw= unit;
buth= unit;
-
+
if(ptr->type == &RNA_Armature) {
bArmature *arm= (bArmature *)ptr->data;
layer_used= arm->layer_used;
@@ -379,7 +379,7 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, const char *name, in
for(a=0; a<colbuts; a++) {
if(layer_used & (1<<(a+b*colbuts))) icon= ICON_LAYER_USED;
else icon= ICON_BLANK1;
-
+
but= uiDefAutoButR(block, ptr, prop, a+b*colbuts, "", icon, x + butw*a, y+buth, butw, buth);
if(subtype == PROP_LAYER_MEMBER)
uiButSetFunc(but, ui_layer_but_cb, but, SET_INT_IN_POINTER(a+b*colbuts));
@@ -387,7 +387,7 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, const char *name, in
for(a=0; a<colbuts; a++) {
if(layer_used & (1<<(a+len/2+b*colbuts))) icon= ICON_LAYER_USED;
else icon= ICON_BLANK1;
-
+
but= uiDefAutoButR(block, ptr, prop, a+len/2+b*colbuts, "", icon, x + butw*a, y, butw, buth);
if(subtype == PROP_LAYER_MEMBER)
uiButSetFunc(but, ui_layer_but_cb, but, SET_INT_IN_POINTER(a+len/2+b*colbuts));
@@ -422,35 +422,46 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, const char *name, in
uiDefButR_prop(block, BUT_NORMAL, 0, name, x, y, UI_UNIT_X*3, UI_UNIT_Y*3, ptr, prop, 0, 0, 0, -1, -1, NULL);
}
else {
- if(ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) && !expand)
+ /* note, this block of code is a bit arbitrary and has just been made
+ * to work with common cases, but may need to be re-worked */
+
+ /* special case, boolean array in a menu, this could be used in a more generic way too */
+ if(ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) && !expand) {
uiDefAutoButR(block, ptr, prop, -1, "", ICON_NONE, 0, 0, w, UI_UNIT_Y);
+ }
+ else {
+ int *boolarr= NULL;
- if(!ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) || expand) {
- /* layout for known array subtypes */
- char str[3];
+ /* even if 'expand' is fale, expanding anyway */
- for(a=0; a<len; a++) {
- str[0]= RNA_property_array_item_char(prop, a);
+ /* layout for known array subtypes */
+ char str[3]= {'\0'};
- if(str[0]) {
- if (icon_only) {
- str[0] = '\0';
- }
- else if(type == PROP_BOOLEAN) {
- str[1]= '\0';
- }
- else {
- str[1]= ':';
- str[2]= '\0';
- }
+ if(!icon_only) {
+ if(type != PROP_BOOLEAN) {
+ str[1]= ':';
}
+ }
+
+ /* show checkboxes for rna on a non-emboss block (menu for eg) */
+ if(type == PROP_BOOLEAN && ELEM(layout->root->block->dt, UI_EMBOSSN, UI_EMBOSSP)) {
+ boolarr= MEM_callocN(sizeof(int)*len, "ui_item_array");
+ RNA_property_boolean_get_array(ptr, prop, boolarr);
+ }
+ for(a=0; a<len; a++) {
+ if(!icon_only) str[0]= RNA_property_array_item_char(prop, a);
+ if(boolarr) icon= boolarr[a] ? ICON_CHECKBOX_HLT: ICON_CHECKBOX_DEHLT;
but= uiDefAutoButR(block, ptr, prop, a, str, icon, 0, 0, w, UI_UNIT_Y);
if(slider && but->type==NUM)
but->type= NUMSLI;
if(toggle && but->type==OPTION)
but->type= TOG;
}
+
+ if(boolarr) {
+ MEM_freeN(boolarr);
+ }
}
}
@@ -951,13 +962,14 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index
uiBut *but;
PropertyType type;
char namestr[UI_MAX_NAME_STR];
- int len, w, h, slider, toggle, expand, icon_only, no_bg;
+ int len, is_array, w, h, slider, toggle, expand, icon_only, no_bg;
uiBlockSetCurLayout(block, layout);
/* retrieve info */
type= RNA_property_type(prop);
- len= RNA_property_array_length(ptr, prop);
+ is_array= RNA_property_array_check(prop);
+ len= (is_array) ? RNA_property_array_length(ptr, prop) : 0;
/* set name and icon */
if(!name)
@@ -967,14 +979,16 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index
if(ELEM4(type, PROP_INT, PROP_FLOAT, PROP_STRING, PROP_POINTER))
name= ui_item_name_add_colon(name, namestr);
- else if(type == PROP_BOOLEAN && len && index == RNA_NO_INDEX)
+ else if(type == PROP_BOOLEAN && is_array && index == RNA_NO_INDEX)
name= ui_item_name_add_colon(name, namestr);
else if(type == PROP_ENUM && index != RNA_ENUM_VALUE)
name= ui_item_name_add_colon(name, namestr);
if(layout->root->type == UI_LAYOUT_MENU) {
- if(type == PROP_BOOLEAN)
- icon= (RNA_property_boolean_get(ptr, prop))? ICON_CHECKBOX_HLT: ICON_CHECKBOX_DEHLT;
+ if(type == PROP_BOOLEAN && ((is_array == FALSE) || (index != RNA_NO_INDEX))) {
+ if(is_array) icon= (RNA_property_boolean_get_index(ptr, prop, index)) ? ICON_CHECKBOX_HLT: ICON_CHECKBOX_DEHLT;
+ else icon= (RNA_property_boolean_get(ptr, prop)) ? ICON_CHECKBOX_HLT: ICON_CHECKBOX_DEHLT;
+ }
else if(type == PROP_ENUM && index == RNA_ENUM_VALUE) {
int enum_value= RNA_property_enum_get(ptr, prop);
if(RNA_property_flag(prop) & PROP_ENUM_FLAG) {
@@ -999,7 +1013,7 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index
uiBlockSetEmboss(block, UI_EMBOSSN);
/* array property */
- if(index == RNA_NO_INDEX && len > 0)
+ if(index == RNA_NO_INDEX && is_array)
ui_item_array(layout, block, name, icon, ptr, prop, len, 0, 0, w, h, expand, slider, toggle, icon_only);
/* enum item */
else if(type == PROP_ENUM && index == RNA_ENUM_VALUE) {
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index f7460e77030..8bce27e366b 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -1188,7 +1188,7 @@ static void ui_block_position(wmWindow *window, ARegion *butregion, uiBut *but,
uiBut *bt;
uiSafetyRct *saferct;
rctf butrct;
- float aspect;
+ /*float aspect;*/ /*UNUSED*/
int xsize, ysize, xof=0, yof=0, center;
short dir1= 0, dir2=0;
@@ -1223,7 +1223,7 @@ static void ui_block_position(wmWindow *window, ARegion *butregion, uiBut *but,
}
}
- aspect= (float)(block->maxx - block->minx + 4);
+ /*aspect= (float)(block->maxx - block->minx + 4);*/ /*UNUSED*/
ui_block_to_window_fl(butregion, but->block, &block->minx, &block->miny);
ui_block_to_window_fl(butregion, but->block, &block->maxx, &block->maxy);
@@ -1232,7 +1232,7 @@ static void ui_block_position(wmWindow *window, ARegion *butregion, uiBut *but,
xsize= block->maxx - block->minx+4; // 4 for shadow
ysize= block->maxy - block->miny+4;
- aspect/= (float)xsize;
+ /*aspect/= (float)xsize;*/ /*UNUSED*/
if(but) {
int left=0, right=0, top=0, down=0;
diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c
index f660dbb9edd..a3f56192cb5 100644
--- a/source/blender/editors/interface/interface_utils.c
+++ b/source/blender/editors/interface/interface_utils.c
@@ -143,7 +143,7 @@ int uiDefAutoButsRNA(uiLayout *layout, PointerRNA *ptr, int (*check_prop)(Proper
if(label_align != '\0') {
PropertyType type = RNA_property_type(prop);
- int is_boolean = (type == PROP_BOOLEAN && !RNA_property_array_check(ptr, prop));
+ int is_boolean = (type == PROP_BOOLEAN && !RNA_property_array_check(prop));
name= RNA_property_ui_name(prop);
diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c
index ec08bfccda3..4377fb03632 100644
--- a/source/blender/editors/mesh/editmesh.c
+++ b/source/blender/editors/mesh/editmesh.c
@@ -1449,9 +1449,8 @@ static int mesh_separate_material(wmOperator *op, Main *bmain, Scene *scene, Bas
/* select the material */
EM_select_by_material(em, curr_mat);
/* and now separate */
- if(0==mesh_separate_selected(op, bmain, scene, editbase)) {
- BKE_mesh_end_editmesh(me, em);
- return 0;
+ if(em->totfacesel > 0) {
+ mesh_separate_selected(op, bmain, scene, editbase);
}
}
diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c
index 9497370a4fa..eb6854d2548 100644
--- a/source/blender/editors/mesh/editmesh_mods.c
+++ b/source/blender/editors/mesh/editmesh_mods.c
@@ -1697,7 +1697,7 @@ void EM_mesh_copy_face_layer(EditMesh *em, wmOperator *op, short type)
/* ctrl+c in mesh editmode */
-static void mesh_copy_menu(EditMesh *em, wmOperator *op)
+static void UNUSED_FUNCTION(mesh_copy_menu)(EditMesh *em, wmOperator *op)
{
EditSelection *ese;
int ret;
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index bfae101d38e..9ff2923f733 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -3895,7 +3895,7 @@ void MESH_OT_edge_rotate(wmOperatorType *ot)
/* XXX old bevel not ported yet */
-static void bevel_menu(EditMesh *em)
+static void UNUSED_FUNCTION(bevel_menu)(EditMesh *em)
{
BME_Mesh *bm;
BME_TransData_Head *td;
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index 6bc4c30a898..4660d38a208 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -188,7 +188,7 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode)
}
RNA_def_float_vector_xyz(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object", -FLT_MAX, FLT_MAX);
- RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX);
+ RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -M_PI * 2.0f, M_PI * 2.0f);
prop = RNA_def_boolean_layer_member(ot->srna, "layers", 20, NULL, "Layer", "");
RNA_def_property_flag(prop, PROP_HIDDEN);
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index c8d38218533..61734bc51a2 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -721,7 +721,7 @@ static void spot_interactive(Object *ob, int mode)
}
#endif
-static void special_editmenu(Scene *scene, View3D *v3d)
+static void UNUSED_FUNCTION(special_editmenu)(Scene *scene, View3D *v3d)
{
// XXX static short numcuts= 2;
Object *ob= OBACT;
@@ -1343,7 +1343,7 @@ static void copy_attr(Main *bmain, Scene *scene, View3D *v3d, short event)
DAG_ids_flush_update(bmain, 0);
}
-static void copy_attr_menu(Main *bmain, Scene *scene, View3D *v3d)
+static void UNUSED_FUNCTION(copy_attr_menu)(Main *bmain, Scene *scene, View3D *v3d)
{
Object *ob;
short event;
@@ -1616,7 +1616,7 @@ void OBJECT_OT_shade_smooth(wmOperatorType *ot)
/* ********************** */
-static void image_aspect(Scene *scene, View3D *v3d)
+static void UNUSED_FUNCTION(image_aspect)(Scene *scene, View3D *v3d)
{
/* all selected objects with an image map: scale in image aspect */
Base *base;
@@ -1691,7 +1691,7 @@ static int vergbaseco(const void *a1, const void *a2)
}
-static void auto_timeoffs(Scene *scene, View3D *v3d)
+static void UNUSED_FUNCTION(auto_timeoffs)(Scene *scene, View3D *v3d)
{
Base *base, **basesort, **bs;
float start, delta;
@@ -1732,7 +1732,7 @@ static void auto_timeoffs(Scene *scene, View3D *v3d)
}
-static void ofs_timeoffs(Scene *scene, View3D *v3d)
+static void UNUSED_FUNCTION(ofs_timeoffs)(Scene *scene, View3D *v3d)
{
float offset=0.0f;
@@ -1751,7 +1751,7 @@ static void ofs_timeoffs(Scene *scene, View3D *v3d)
}
-static void rand_timeoffs(Scene *scene, View3D *v3d)
+static void UNUSED_FUNCTION(rand_timeoffs)(Scene *scene, View3D *v3d)
{
Base *base;
float rand_ofs=0.0f;
diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c
index f7c6ff99bde..78f3537bea9 100644
--- a/source/blender/editors/object/object_transform.c
+++ b/source/blender/editors/object/object_transform.c
@@ -246,7 +246,7 @@ static int object_clear_transform_generic_exec(bContext *C, wmOperator *op,
}
/* tag for updates */
- ob->recalc |= OB_RECALC_OB;
+ DAG_id_tag_update(&ob->id, OB_RECALC_OB);
}
}
CTX_DATA_END;
@@ -341,7 +341,8 @@ static int object_origin_clear_exec(bContext *C, wmOperator *UNUSED(op))
negate_v3_v3(v3, v1);
mul_m3_v3(mat, v3);
}
- ob->recalc |= OB_RECALC_OB;
+
+ DAG_id_tag_update(&ob->id, OB_RECALC_OB);
}
CTX_DATA_END;
@@ -871,7 +872,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
(ob->dup_group==ob_other->dup_group && (ob->transflag|ob_other->transflag) & OB_DUPLIGROUP) )
) {
ob_other->flag |= OB_DONE;
- ob_other->recalc= OB_RECALC_OB|OB_RECALC_DATA;
+ DAG_id_tag_update(&ob_other->id, OB_RECALC_OB|OB_RECALC_DATA);
copy_v3_v3(centn, cent);
mul_mat3_m4_v3(ob_other->obmat, centn); /* ommit translation part */
@@ -890,11 +891,9 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
- for (tob= bmain->object.first; tob; tob= tob->id.next) {
- if(tob->data && (((ID *)tob->data)->flag & LIB_DOIT)) {
- tob->recalc= OB_RECALC_OB|OB_RECALC_DATA;
- }
- }
+ for (tob= bmain->object.first; tob; tob= tob->id.next)
+ if(tob->data && (((ID *)tob->data)->flag & LIB_DOIT))
+ DAG_id_tag_update(&tob->id, OB_RECALC_OB|OB_RECALC_DATA);
if (tot_change) {
DAG_ids_flush_update(bmain, 0);
diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c
index 98f42fe97c1..85e1eb016d7 100644
--- a/source/blender/editors/render/render_update.c
+++ b/source/blender/editors/render/render_update.c
@@ -24,7 +24,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/editors/render/render_shading.c
+/** \file blender/editors/render/render_update.c
* \ingroup edrend
*/
@@ -58,6 +58,7 @@
#include "GPU_material.h"
+#include "ED_node.h"
#include "ED_render.h"
#include "render_intern.h" // own include
@@ -115,6 +116,8 @@ static void texture_changed(Main *bmain, Tex *tex)
Material *ma;
Lamp *la;
World *wo;
+ Scene *scene;
+ bNode *node;
/* icons */
BKE_icon_changed(BKE_icon_getid(&tex->id));
@@ -146,6 +149,16 @@ static void texture_changed(Main *bmain, Tex *tex)
BKE_icon_changed(BKE_icon_getid(&wo->id));
}
+
+ /* find compositing nodes */
+ for(scene=bmain->scene.first; scene; scene=scene->id.next) {
+ if(scene->use_nodes && scene->nodetree) {
+ for(node=scene->nodetree->nodes.first; node; node=node->next) {
+ if(node->id == &tex->id)
+ ED_node_changed_update(&scene->id, node);
+ }
+ }
+ }
}
static void lamp_changed(Main *bmain, Lamp *la)
diff --git a/source/blender/editors/space_console/console_ops.c b/source/blender/editors/space_console/console_ops.c
index 3effea296d7..4707baa279b 100644
--- a/source/blender/editors/space_console/console_ops.c
+++ b/source/blender/editors/space_console/console_ops.c
@@ -675,7 +675,12 @@ static int scrollback_append_exec(bContext *C, wmOperator *op)
console_scrollback_limit(sc);
- console_textview_update_rect(sc, ar);
+ /* 'ar' can be null depending on the operator that runs
+ * rendering with invoke default for eg causes this */
+ if(ar) {
+ console_textview_update_rect(sc, ar);
+ }
+
ED_area_tag_redraw(CTX_wm_area(C));
return OPERATOR_FINISHED;
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index d4253495e97..4dd97c63d40 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -1159,6 +1159,13 @@ int file_filename_exec(bContext *C, wmOperator *UNUSED(unused))
return OPERATOR_FINISHED;
}
+/* TODO, directory operator is non-functional while a library is loaded
+ * until this is properly supported just disable it. */
+static int file_directory_poll(bContext *C)
+{
+ return ED_operator_file_active(C) && filelist_lib(CTX_wm_space_file(C)->files) == NULL;
+}
+
void FILE_OT_directory(struct wmOperatorType *ot)
{
/* identifiers */
@@ -1169,7 +1176,7 @@ void FILE_OT_directory(struct wmOperatorType *ot)
/* api callbacks */
ot->invoke= file_directory_invoke;
ot->exec= file_directory_exec;
- ot->poll= ED_operator_file_active; /* <- important, handler is on window level */
+ ot->poll= file_directory_poll; /* <- important, handler is on window level */
}
void FILE_OT_refresh(struct wmOperatorType *ot)
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index e245e19ce96..7382188d62a 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -602,28 +602,6 @@ short filelist_changed(struct FileList* filelist)
return filelist->changed;
}
-static struct ImBuf * filelist_loadimage(struct FileList* filelist, int index)
-{
- ImBuf *imb = NULL;
- int fidx = 0;
-
- if ( (index < 0) || (index >= filelist->numfiltered) ) {
- return NULL;
- }
- fidx = filelist->fidx[index];
- imb = filelist->filelist[fidx].image;
- if (!imb)
- {
- if ( (filelist->filelist[fidx].flags & IMAGEFILE) || (filelist->filelist[fidx].flags & MOVIEFILE) ) {
- imb = IMB_thumb_read(filelist->filelist[fidx].path, THB_NORMAL);
- }
- if (imb) {
- filelist->filelist[fidx].image = imb;
- }
- }
- return imb;
-}
-
struct ImBuf * filelist_getimage(struct FileList* filelist, int index)
{
ImBuf* ibuf = NULL;
diff --git a/source/blender/editors/space_nla/nla_edit.c b/source/blender/editors/space_nla/nla_edit.c
index df638107bc3..0f87be0f807 100644
--- a/source/blender/editors/space_nla/nla_edit.c
+++ b/source/blender/editors/space_nla/nla_edit.c
@@ -1170,7 +1170,7 @@ static int nlaedit_bake_exec (bContext *C, wmOperator *UNUSED(op))
return OPERATOR_FINISHED;
}
-static void NLA_OT_bake (wmOperatorType *ot)
+void NLA_OT_bake (wmOperatorType *ot)
{
/* identifiers */
ot->name= "Bake Strips";
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index c719f749582..9cafc46ca53 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -479,72 +479,88 @@ static void snode_tag_changed(SpaceNode *snode, bNode *node)
NodeTagIDChanged(snode->nodetree, gnode->id);
}
-void node_set_active(SpaceNode *snode, bNode *node)
+static int has_nodetree(bNodeTree *ntree, bNodeTree *lookup)
{
- nodeSetActive(snode->edittree, node);
+ bNode *node;
+
+ if(ntree == lookup)
+ return 1;
+
+ for(node=ntree->nodes.first; node; node=node->next)
+ if(node->type == NODE_GROUP && node->id)
+ if(has_nodetree((bNodeTree*)node->id, lookup))
+ return 1;
+
+ return 0;
+}
+
+void ED_node_set_active(Main *bmain, bNodeTree *ntree, bNode *node)
+{
+ nodeSetActive(ntree, node);
if(node->type!=NODE_GROUP) {
int was_output= (node->flag & NODE_DO_OUTPUT);
/* tree specific activate calls */
- if(snode->treetype==NTREE_SHADER) {
+ if(ntree->type==NTREE_SHADER) {
/* when we select a material, active texture is cleared, for buttons */
if(node->id && GS(node->id->name)==ID_MA)
- nodeClearActiveID(snode->edittree, ID_TE);
+ nodeClearActiveID(ntree, ID_TE);
if(node->type==SH_NODE_OUTPUT) {
bNode *tnode;
- for(tnode= snode->edittree->nodes.first; tnode; tnode= tnode->next)
+ for(tnode= ntree->nodes.first; tnode; tnode= tnode->next)
if( tnode->type==SH_NODE_OUTPUT)
tnode->flag &= ~NODE_DO_OUTPUT;
node->flag |= NODE_DO_OUTPUT;
if(was_output==0)
- ED_node_changed_update(snode->id, node);
+ ED_node_generic_update(bmain, ntree, node);
}
WM_main_add_notifier(NC_MATERIAL|ND_NODES, node->id);
}
- else if(snode->treetype==NTREE_COMPOSIT) {
- Scene *scene= (Scene*)snode->id;
-
+ else if(ntree->type==NTREE_COMPOSIT) {
/* make active viewer, currently only 1 supported... */
if( ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) {
bNode *tnode;
- for(tnode= snode->edittree->nodes.first; tnode; tnode= tnode->next)
+ for(tnode= ntree->nodes.first; tnode; tnode= tnode->next)
if( ELEM(tnode->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER))
tnode->flag &= ~NODE_DO_OUTPUT;
node->flag |= NODE_DO_OUTPUT;
- if(was_output==0) {
- snode_tag_changed(snode, node);
-
- ED_node_changed_update(snode->id, node);
- }
+ if(was_output==0)
+ ED_node_generic_update(bmain, ntree, node);
/* addnode() doesnt link this yet... */
node->id= (ID *)BKE_image_verify_viewer(IMA_TYPE_COMPOSITE, "Viewer Node");
}
else if(node->type==CMP_NODE_R_LAYERS) {
- if(node->id==NULL || node->id==(ID *)scene) {
- scene->r.actlay= node->custom1;
+ Scene *scene;
+
+ for(scene=bmain->scene.first; scene; scene=scene->id.next) {
+ if(scene->nodetree && scene->use_nodes && has_nodetree(scene->nodetree, ntree)) {
+ if(node->id==NULL || node->id==(ID *)scene) {
+ scene->r.actlay= node->custom1;
+ }
+ }
}
}
else if(node->type==CMP_NODE_COMPOSITE) {
bNode *tnode;
- for(tnode= snode->edittree->nodes.first; tnode; tnode= tnode->next)
+ for(tnode= ntree->nodes.first; tnode; tnode= tnode->next)
if( tnode->type==CMP_NODE_COMPOSITE)
tnode->flag &= ~NODE_DO_OUTPUT;
node->flag |= NODE_DO_OUTPUT;
- ED_node_changed_update(snode->id, node);
+ ED_node_generic_update(bmain, ntree, node);
}
}
- else if(snode->treetype==NTREE_TEXTURE) {
+ else if(ntree->type==NTREE_TEXTURE) {
// XXX
#if 0
if(node->id)
@@ -1625,7 +1641,7 @@ void NODE_OT_link_viewer(wmOperatorType *ot)
/* return 0, nothing done */
-static int node_mouse_groupheader(SpaceNode *snode)
+static int UNUSED_FUNCTION(node_mouse_groupheader)(SpaceNode *snode)
{
bNode *gnode;
float mx=0, my=0;
@@ -1940,7 +1956,7 @@ void snode_autoconnect(SpaceNode *snode, int allow_multiple, int replace)
}
/* can be called from menus too, but they should do own undopush and redraws */
-bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float locy)
+bNode *node_add_node(SpaceNode *snode, Main *bmain, Scene *scene, int type, float locx, float locy)
{
bNode *node= NULL, *gnode;
@@ -1955,7 +1971,7 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float
return NULL;
}
else {
- bNodeTree *ngroup= BLI_findlink(&G.main->nodetree, type-NODE_GROUP_MENU);
+ bNodeTree *ngroup= BLI_findlink(&bmain->nodetree, type-NODE_GROUP_MENU);
if(ngroup)
node= nodeAddNodeType(snode->edittree, NODE_GROUP, ngroup, NULL);
}
@@ -1976,7 +1992,7 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float
}
node_tree_verify_groups(snode->nodetree);
- node_set_active(snode, node);
+ ED_node_set_active(bmain, snode->edittree, node);
if(snode->nodetree->type==NTREE_COMPOSIT) {
if(ELEM4(node->type, CMP_NODE_R_LAYERS, CMP_NODE_COMPOSITE, CMP_NODE_DEFOCUS, CMP_NODE_OUTPUT_FILE))
@@ -2991,10 +3007,10 @@ static int node_mute_exec(bContext *C, wmOperator *UNUSED(op))
for(node= snode->edittree->nodes.first; node; node= node->next) {
if(node->flag & SELECT) {
- if(node->inputs.first && node->outputs.first) {
+ /* Be able to mute in-/output nodes as well. - DingTo
+ if(node->inputs.first && node->outputs.first) { */
node->flag ^= NODE_MUTED;
snode_tag_changed(snode, node);
- }
}
}
@@ -3205,6 +3221,7 @@ void NODE_OT_show_cyclic_dependencies(wmOperatorType *ot)
static int node_add_file_exec(bContext *C, wmOperator *op)
{
+ Main *bmain= CTX_data_main(C);
Scene *scene= CTX_data_scene(C);
SpaceNode *snode= CTX_wm_space_node(C);
bNode *node;
@@ -3245,7 +3262,7 @@ static int node_add_file_exec(bContext *C, wmOperator *op)
ED_preview_kill_jobs(C);
- node = node_add_node(snode, scene, ntype, snode->mx, snode->my);
+ node = node_add_node(snode, bmain, scene, ntype, snode->mx, snode->my);
if (!node) {
BKE_report(op->reports, RPT_WARNING, "Could not add an image node.");
diff --git a/source/blender/editors/space_node/node_header.c b/source/blender/editors/space_node/node_header.c
index 4f3991e8ff8..634e49dc515 100644
--- a/source/blender/editors/space_node/node_header.c
+++ b/source/blender/editors/space_node/node_header.c
@@ -64,6 +64,8 @@
static void do_node_add(bContext *C, void *UNUSED(arg), int event)
{
+ Main *bmain= CTX_data_main(C);
+ Scene *scene= CTX_data_scene(C);
SpaceNode *snode= CTX_wm_space_node(C);
ScrArea *sa= CTX_wm_area(C);
ARegion *ar;
@@ -87,7 +89,7 @@ static void do_node_add(bContext *C, void *UNUSED(arg), int event)
else node->flag &= ~NODE_TEST;
}
- node= node_add_node(snode, CTX_data_scene(C), event, snode->mx, snode->my);
+ node= node_add_node(snode, bmain, scene, event, snode->mx, snode->my);
/* select previous selection before autoconnect */
for(node= snode->edittree->nodes.first; node; node= node->next) {
diff --git a/source/blender/editors/space_node/node_intern.h b/source/blender/editors/space_node/node_intern.h
index 9122235f33c..4cfde22b8a0 100644
--- a/source/blender/editors/space_node/node_intern.h
+++ b/source/blender/editors/space_node/node_intern.h
@@ -43,6 +43,7 @@ struct wmWindowManager;
struct bNode;
struct bNodeSocket;
struct bNodeLink;
+struct Main;
/* temp data to pass on to modal */
typedef struct bNodeLinkDrag
@@ -97,10 +98,9 @@ void node_tree_from_ID(ID *id, bNodeTree **ntree, bNodeTree **edittree, int *tre
void snode_notify(bContext *C, SpaceNode *snode);
void snode_dag_update(bContext *C, SpaceNode *snode);
bNode *next_node(bNodeTree *ntree);
-bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float locy);
+bNode *node_add_node(SpaceNode *snode, struct Main *bmain, Scene *scene, int type, float locx, float locy);
void snode_set_context(SpaceNode *snode, Scene *scene);
void snode_make_group_editable(SpaceNode *snode, bNode *gnode);
-void node_set_active(SpaceNode *snode, bNode *node);
void node_deselectall(SpaceNode *snode);
int node_select_same_type(SpaceNode *snode);
int node_select_same_type_np(SpaceNode *snode, int dir);
diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c
index 1abcaccc939..ca673277739 100644
--- a/source/blender/editors/space_node/node_select.c
+++ b/source/blender/editors/space_node/node_select.c
@@ -37,10 +37,12 @@
#include "DNA_scene_types.h"
#include "BKE_context.h"
+#include "BKE_main.h"
#include "BLI_rect.h"
#include "BLI_utildefines.h"
+#include "ED_node.h"
#include "ED_screen.h"
#include "ED_types.h"
@@ -70,7 +72,7 @@ static bNode *node_under_mouse(bNodeTree *ntree, int mx, int my)
/* ****** Click Select ****** */
-static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, const int mval[2], short extend)
+static bNode *node_mouse_select(Main *bmain, SpaceNode *snode, ARegion *ar, const int mval[2], short extend)
{
bNode *node;
float mx, my;
@@ -92,7 +94,7 @@ static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, const int mval[2]
else
node->flag ^= SELECT;
- node_set_active(snode, node);
+ ED_node_set_active(bmain, snode->edittree, node);
}
return node;
@@ -100,6 +102,7 @@ static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, const int mval[2]
static int node_select_exec(bContext *C, wmOperator *op)
{
+ Main *bmain= CTX_data_main(C);
SpaceNode *snode= CTX_wm_space_node(C);
ARegion *ar= CTX_wm_region(C);
int mval[2];
@@ -113,7 +116,7 @@ static int node_select_exec(bContext *C, wmOperator *op)
extend = RNA_boolean_get(op->ptr, "extend");
/* perform the select */
- node= node_mouse_select(snode, ar, mval, extend);
+ node= node_mouse_select(bmain, snode, ar, mval, extend);
/* send notifiers */
WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL);
diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c
index 23873b1fde7..b701aecafb8 100644
--- a/source/blender/editors/space_outliner/outliner_select.c
+++ b/source/blender/editors/space_outliner/outliner_select.c
@@ -658,8 +658,8 @@ int tree_element_active(bContext *C, Scene *scene, SpaceOops *soops, TreeElement
{
switch(te->idcode) {
- case ID_OB:
- return tree_element_set_active_object(C, scene, soops, te, set);
+ /* Note: no ID_OB: objects are handled specially to allow multiple
+ selection. See do_outliner_item_activate. */
case ID_MA:
return tree_element_active_material(C, scene, soops, te, set);
case ID_WO:
diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c
index 54229a683a3..2fe16b3a85d 100644
--- a/source/blender/editors/space_sequencer/sequencer_add.c
+++ b/source/blender/editors/space_sequencer/sequencer_add.c
@@ -83,9 +83,8 @@
/* avoid passing multiple args and be more verbose */
#define SEQPROP_STARTFRAME (1<<0)
#define SEQPROP_ENDFRAME (1<<1)
-#define SEQPROP_FILES (1<<2)
-#define SEQPROP_NOPATHS (1<<3)
-#define SEQPROP_NOCHAN (1<<4)
+#define SEQPROP_NOPATHS (1<<2)
+#define SEQPROP_NOCHAN (1<<3)
#define SELECT 1
@@ -102,9 +101,6 @@ static void sequencer_generic_props__internal(wmOperatorType *ot, int flag)
RNA_def_boolean(ot->srna, "replace_sel", 1, "Replace Selection", "replace the current selection");
RNA_def_boolean(ot->srna, "overlap", 0, "Allow Overlap", "Don't correct overlap on new sequence strips");
-
- if(flag & SEQPROP_FILES)
- RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", "");
}
static void sequencer_generic_invoke_path__internal(bContext *C, wmOperator *op, const char *identifier)
@@ -411,8 +407,8 @@ void SEQUENCER_OT_movie_strip_add(struct wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH);
- sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES);
+ WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH|WM_FILESEL_FILES);
+ sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME);
RNA_def_boolean(ot->srna, "sound", TRUE, "Sound", "Load sound with the movie");
}
@@ -466,8 +462,8 @@ void SEQUENCER_OT_sound_strip_add(struct wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH);
- sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES);
+ WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH|WM_FILESEL_FILES);
+ sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME);
RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory.");
}
@@ -573,8 +569,8 @@ void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH);
- sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME|SEQPROP_FILES);
+ WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH|WM_FILESEL_FILES);
+ sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME);
}
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index bc97ff341db..352e9f43648 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -736,7 +736,7 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, Sequence *seq, int outline
static Sequence *special_seq_update= 0;
-static void set_special_seq_update(int val)
+static void UNUSED_FUNCTION(set_special_seq_update)(int val)
{
// int x;
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index b9f6b986691..c967d60b001 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -75,10 +75,6 @@
/* own include */
#include "sequencer_intern.h"
-static void error(const char *UNUSED(dummy)) {}
-static void waitcursor(int UNUSED(val)) {}
-static void activate_fileselect(int UNUSED(d1), const char *UNUSED(d2), const char *UNUSED(d3), void *UNUSED(d4)) {}
-static int pupmenu(const char *UNUSED(dummy)) {return 0;}
static int okee(const char *UNUSED(dummy)) {return 0;}
@@ -140,7 +136,7 @@ void seq_rectf(Sequence *seq, rctf *rectf)
rectf->ymax= seq->machine+SEQ_STRIP_OFSTOP;
}
-static void change_plugin_seq(Scene *scene, char *str) /* called from fileselect */
+static void UNUSED_FUNCTION(change_plugin_seq)(Scene *scene, char *str) /* called from fileselect */
{
Editing *ed= seq_give_editing(scene, FALSE);
struct SeqEffectHandle sh;
@@ -393,207 +389,6 @@ void recurs_sel_seq(Sequence *seqm)
}
}
-int event_to_efftype(int event)
-{
- if(event==2) return SEQ_CROSS;
- if(event==3) return SEQ_GAMCROSS;
- if(event==4) return SEQ_ADD;
- if(event==5) return SEQ_SUB;
- if(event==6) return SEQ_MUL;
- if(event==7) return SEQ_ALPHAOVER;
- if(event==8) return SEQ_ALPHAUNDER;
- if(event==9) return SEQ_OVERDROP;
- if(event==10) return SEQ_PLUGIN;
- if(event==13) return SEQ_WIPE;
- if(event==14) return SEQ_GLOW;
- if(event==15) return SEQ_TRANSFORM;
- if(event==16) return SEQ_COLOR;
- if(event==17) return SEQ_SPEED;
- if(event==18) return SEQ_ADJUSTMENT;
- if(event==19) return SEQ_TITLECARD;
- return 0;
-}
-
-#if 0
-static void reload_sound_strip(Scene *scene, char *name)
-{
- Editing *ed;
- Sequence *seq, *seqact;
- SpaceFile *sfile;
- Sequence *last_seq= seq_active_get(scene);
-
- ed= scene->ed;
-
- if(last_seq==0 || last_seq->type!=SEQ_SOUND) return;
- seqact= last_seq; /* last_seq changes in alloc_sequence */
-
- /* search sfile */
-// sfile= scrarea_find_space_of_type(curarea, SPACE_FILE);
- if(sfile==0) return;
-
- waitcursor(1);
-
- seq = sfile_to_snd_sequence(sfile, seqact->start, seqact->machine);
- printf("seq->type: %i\n", seq->type);
- if(seq && seq!=seqact) {
- /* i'm not sure about this one, seems to work without it -- sgefant */
- seq_free_strip(seqact->strip);
-
- seqact->strip= seq->strip;
-
- seqact->len= seq->len;
- calc_sequence(scene, seqact);
-
- seq->strip= 0;
- seq_free_sequence(scene, seq);
- BLI_remlink(ed->seqbasep, seq);
-
- seq= ed->seqbasep->first;
-
- }
-
- waitcursor(0);
-
-}
-#endif
-
-static void reload_image_strip(Scene *scene, char *UNUSED(name))
-{
- Editing *ed= seq_give_editing(scene, FALSE);
- Sequence *seq=NULL, *seqact;
- SpaceFile *sfile=NULL;
- Sequence *last_seq= seq_active_get(scene);
-
-
-
- if(last_seq==NULL || last_seq->type!=SEQ_IMAGE) return;
- seqact= last_seq; /* last_seq changes in alloc_sequence */
-
- /* search sfile */
-// sfile= scrarea_find_space_of_type(curarea, SPACE_FILE);
- if(sfile == NULL) return;
-
- waitcursor(1);
-
-// seq= sfile_to_sequence(scene, sfile, seqact->start, seqact->machine, 1); // XXX ADD BACK
- if(seq && seq!=seqact) {
- seq_free_strip(seqact->strip);
-
- seqact->strip= seq->strip;
-
- seqact->len= seq->len;
- calc_sequence(scene, seqact);
-
- seq->strip= NULL;
- seq_free_sequence(scene, seq);
- BLI_remlink(ed->seqbasep, seq);
-
- update_changed_seq_and_deps(scene, seqact, 1, 1);
- }
- waitcursor(0);
-
-}
-
-
-static void change_sequence(Scene *scene)
-{
- Editing *ed= seq_give_editing(scene, FALSE);
- Sequence *last_seq= seq_active_get(scene);
- Scene *sce;
- short event;
-
- if(last_seq == NULL) return;
-
- if(last_seq->type & SEQ_EFFECT) {
- event = pupmenu("Change Effect%t"
- "|Switch A <-> B %x1"
- "|Switch B <-> C %x10"
- "|Plugin%x11"
- "|Recalculate%x12"
- "|Cross%x2"
- "|Gamma Cross%x3"
- "|Add%x4"
- "|Sub%x5"
- "|Mul%x6"
- "|Alpha Over%x7"
- "|Alpha Under%x8"
- "|Alpha Over Drop%x9"
- "|Wipe%x13"
- "|Glow%x14"
- "|Transform%x15"
- "|Color Generator%x16"
- "|Speed Control%x17"
- "|Adjustment Layer%x18"
- "|Title Card%x19");
- if(event > 0) {
- if(event==1) {
- SWAP(Sequence *,last_seq->seq1,last_seq->seq2);
- }
- else if(event==10) {
- SWAP(Sequence *,last_seq->seq2,last_seq->seq3);
- }
- else if(event==11) {
- activate_fileselect(
- FILE_SPECIAL, "Select Plugin",
- U.plugseqdir, change_plugin_seq);
- }
- else if(event==12);
- /* recalculate: only new_stripdata */
- else {
- /* free previous effect and init new effect */
- struct SeqEffectHandle sh;
-
- if (get_sequence_effect_num_inputs(
- last_seq->type)
- < get_sequence_effect_num_inputs(
- event_to_efftype(event))) {
- error("New effect needs more "
- "input strips!");
- } else {
- sh = get_sequence_effect(last_seq);
- sh.free(last_seq);
-
- last_seq->type
- = event_to_efftype(event);
-
- sh = get_sequence_effect(last_seq);
- sh.init(last_seq);
- }
- }
-
- update_changed_seq_and_deps(scene, last_seq, 0, 1);
- }
- }
- else if(last_seq->type == SEQ_IMAGE) {
- if(okee("Change images")) {
- activate_fileselect(FILE_SPECIAL,
- "Select Images",
- ed->act_imagedir,
- reload_image_strip);
- }
- }
- else if(last_seq->type == SEQ_MOVIE) {
- ;
- }
- else if(last_seq->type == SEQ_SCENE) {
- event= pupmenu("Change Scene%t|Update Start and End");
-
- if(event==1) {
- sce= last_seq->scene;
-
- last_seq->len= sce->r.efra - sce->r.sfra + 1;
- last_seq->sfra= sce->r.sfra;
-
- /* bad code to change seq->len? update_changed_seq_and_deps() expects the strip->len to be OK */
- new_tstripdata(last_seq);
-
- update_changed_seq_and_deps(scene, last_seq, 1, 1);
-
- }
- }
-
-}
-
int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequence **selseq1, Sequence **selseq2, Sequence **selseq3, const char **error_str)
{
Editing *ed = seq_give_editing(scene, FALSE);
@@ -964,7 +759,7 @@ static int insert_gap(Scene *scene, int gap, int cfra)
return done;
}
-static void touch_seq_files(Scene *scene)
+static void UNUSED_FUNCTION(touch_seq_files)(Scene *scene)
{
Sequence *seq;
Editing *ed= seq_give_editing(scene, FALSE);
@@ -976,7 +771,7 @@ static void touch_seq_files(Scene *scene)
if(okee("Touch and print selected movies")==0) return;
- waitcursor(1);
+ WM_cursor_wait(1);
SEQP_BEGIN(ed, seq) {
if(seq->flag & SELECT) {
@@ -991,7 +786,7 @@ static void touch_seq_files(Scene *scene)
}
SEQ_END
- waitcursor(0);
+ WM_cursor_wait(0);
}
/*
@@ -1019,7 +814,7 @@ static void set_filter_seq(Scene *scene)
}
*/
-static void seq_remap_paths(Scene *scene)
+static void UNUSED_FUNCTION(seq_remap_paths)(Scene *scene)
{
Sequence *seq, *last_seq = seq_active_get(scene);
Editing *ed= seq_give_editing(scene, FALSE);
@@ -1060,7 +855,7 @@ static void seq_remap_paths(Scene *scene)
}
-static void no_gaps(Scene *scene)
+static void UNUSED_FUNCTION(no_gaps)(Scene *scene)
{
Editing *ed= seq_give_editing(scene, FALSE);
int cfra, first= 0, done;
@@ -1106,6 +901,19 @@ int sequencer_edit_poll(bContext *C)
return (seq_give_editing(CTX_data_scene(C), FALSE) != NULL);
}
+int sequencer_strip_poll(bContext *C)
+{
+ Editing *ed;
+ return (((ed= seq_give_editing(CTX_data_scene(C), FALSE)) != NULL) && (ed->act_seq != NULL));
+}
+
+int sequencer_strip_has_path_poll(bContext *C)
+{
+ Editing *ed;
+ Sequence *seq;
+ return (((ed= seq_give_editing(CTX_data_scene(C), FALSE)) != NULL) && ((seq= ed->act_seq) != NULL) && (SEQ_HAS_PATH(seq)));
+}
+
int sequencer_view_poll(bContext *C)
{
SpaceSeq *sseq= CTX_wm_space_seq(C);
@@ -1758,6 +1566,58 @@ void SEQUENCER_OT_delete(wmOperatorType *ot)
}
+/* offset clear operator */
+static int sequencer_offset_clear_exec(bContext *C, wmOperator *UNUSED(op))
+{
+ Scene *scene= CTX_data_scene(C);
+ Editing *ed= seq_give_editing(scene, FALSE);
+ Sequence *seq;
+
+ /* for effects, try to find a replacement input */
+ for(seq=ed->seqbasep->first; seq; seq=seq->next) {
+ if((seq->type & SEQ_EFFECT)==0 && (seq->flag & SELECT)) {
+ seq->startofs= seq->endofs= seq->startstill= seq->endstill= 0;
+ }
+ }
+
+ /* updates lengths etc */
+ seq= ed->seqbasep->first;
+ while(seq) {
+ calc_sequence(scene, seq);
+ seq= seq->next;
+ }
+
+ for(seq=ed->seqbasep->first; seq; seq=seq->next) {
+ if((seq->type & SEQ_EFFECT)==0 && (seq->flag & SELECT)) {
+ if(seq_test_overlap(ed->seqbasep, seq)) {
+ shuffle_seq(ed->seqbasep, seq, scene);
+ }
+ }
+ }
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
+
+ return OPERATOR_FINISHED;
+}
+
+
+void SEQUENCER_OT_offset_clear(wmOperatorType *ot)
+{
+
+ /* identifiers */
+ ot->name= "Clear Strip Offset";
+ ot->idname= "SEQUENCER_OT_offset_clear";
+ ot->description="Clear strip offsets from the start and end frames";
+
+ /* api callbacks */
+ ot->exec= sequencer_offset_clear_exec;
+ ot->poll= sequencer_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+
/* separate_images operator */
static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
{
@@ -2833,3 +2693,230 @@ void SEQUENCER_OT_view_ghost_border(wmOperatorType *ot)
/* rna */
WM_operator_properties_gesture_border(ot, FALSE);
}
+
+
+/* change ops */
+
+static EnumPropertyItem prop_change_effect_input_types[] = {
+ {0, "A_B", 0, "A -> B", ""},
+ {1, "B_C", 0, "B -> C", ""},
+ {2, "A_C", 0, "A -> C", ""},
+ {0, NULL, 0, NULL, NULL}
+};
+
+static int sequencer_change_effect_input_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Editing *ed= seq_give_editing(scene, FALSE);
+ Sequence *seq= seq_active_get(scene);
+
+ Sequence **seq_1, **seq_2;
+
+ switch(RNA_enum_get(op->ptr, "swap")) {
+ case 0:
+ seq_1= &seq->seq1;
+ seq_2= &seq->seq2;
+ break;
+ case 1:
+ seq_1= &seq->seq2;
+ seq_2= &seq->seq3;
+ break;
+ default: /* 2 */
+ seq_1= &seq->seq1;
+ seq_2= &seq->seq3;
+ break;
+ }
+
+ if(*seq_1 == NULL || *seq_2 == NULL) {
+ BKE_report(op->reports, RPT_ERROR, "One of the effect inputs is unset, can't swap");
+ return OPERATOR_CANCELLED;
+ }
+ else {
+ SWAP(Sequence *, *seq_1, *seq_2);
+ }
+
+ update_changed_seq_and_deps(scene, seq, 0, 1);
+
+ /* important else we dont get the imbuf cache flushed */
+ free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE);
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
+
+ return OPERATOR_FINISHED;
+}
+
+void SEQUENCER_OT_change_effect_input(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Change Effect Input";
+ ot->idname= "SEQUENCER_OT_change_effect_input";
+ ot->description="";
+
+ /* api callbacks */
+ ot->exec= sequencer_change_effect_input_exec;
+ ot->poll= sequencer_effect_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ ot->prop= RNA_def_enum(ot->srna, "swap", prop_change_effect_input_types, 0, "Swap", "The effect inputs to swap");
+}
+
+static int sequencer_change_effect_type_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Editing *ed= seq_give_editing(scene, FALSE);
+ Sequence *seq= seq_active_get(scene);
+ const int new_type= RNA_enum_get(op->ptr, "type");
+
+ /* free previous effect and init new effect */
+ struct SeqEffectHandle sh;
+
+ if ((seq->type & SEQ_EFFECT) == 0) {
+ return OPERATOR_CANCELLED;
+ }
+
+ /* can someone explain the logic behind only allowing to increse this,
+ * copied from 2.4x - campbell */
+ if (get_sequence_effect_num_inputs(seq->type) <
+ get_sequence_effect_num_inputs(new_type)
+ ) {
+ BKE_report(op->reports, RPT_ERROR, "New effect needs more input strips");
+ return OPERATOR_CANCELLED;
+ }
+ else {
+ sh = get_sequence_effect(seq);
+ sh.free(seq);
+
+ seq->type= new_type;
+
+ sh = get_sequence_effect(seq);
+ sh.init(seq);
+ }
+
+ /* update */
+ update_changed_seq_and_deps(scene, seq, 0, 1);
+
+ /* important else we dont get the imbuf cache flushed */
+ free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE);
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
+
+ return OPERATOR_FINISHED;
+}
+
+void SEQUENCER_OT_change_effect_type(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Change Effect Type";
+ ot->idname= "SEQUENCER_OT_change_effect_type";
+ ot->description="";
+
+ /* api callbacks */
+ ot->exec= sequencer_change_effect_type_exec;
+ ot->poll= sequencer_effect_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ ot->prop= RNA_def_enum(ot->srna, "type", sequencer_prop_effect_types, SEQ_CROSS, "Type", "Sequencer effect type");
+}
+
+static int sequencer_change_path_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Editing *ed= seq_give_editing(scene, FALSE);
+ Sequence *seq= seq_active_get(scene);
+
+ if(seq->type == SEQ_IMAGE) {
+ char directory[FILE_MAX];
+ const int len= RNA_property_collection_length(op->ptr, RNA_struct_find_property(op->ptr, "files"));
+ StripElem *se;
+
+ if(len==0)
+ return OPERATOR_CANCELLED;
+
+ RNA_string_get(op->ptr, "directory", directory);
+ BLI_strncpy(seq->strip->dir, directory, sizeof(seq->strip->dir));
+
+ if(seq->strip->stripdata) {
+ MEM_freeN(seq->strip->stripdata);
+ }
+ seq->strip->stripdata= se= MEM_callocN(len*sizeof(StripElem), "stripelem");
+
+ RNA_BEGIN(op->ptr, itemptr, "files") {
+ char *filename= RNA_string_get_alloc(&itemptr, "name", NULL, 0);
+ BLI_strncpy(se->name, filename, sizeof(se->name));
+ MEM_freeN(filename);
+ se++;
+ }
+ RNA_END;
+
+ /* reset these else we wont see all the images */
+ seq->anim_startofs= seq->anim_endofs= 0;
+
+ /* correct start/end frames so we dont move
+ * important not to set seq->len= len; allow the function to handle it */
+ reload_sequence_new_file(scene, seq, TRUE);
+
+ calc_sequence(scene, seq);
+
+ /* important else we dont get the imbuf cache flushed */
+ free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE);
+ }
+ else {
+ /* lame, set rna filepath */
+ PointerRNA seq_ptr;
+ PropertyRNA *prop;
+ char filepath[FILE_MAX];
+
+ RNA_pointer_create(&scene->id, &RNA_Sequence, seq, &seq_ptr);
+
+ RNA_string_get(op->ptr, "filepath", filepath);
+ prop= RNA_struct_find_property(&seq_ptr, "filepath");
+ RNA_property_string_set(&seq_ptr, prop, filepath);
+ RNA_property_update(C, &seq_ptr, prop);
+ }
+
+ WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
+
+ return OPERATOR_FINISHED;
+}
+
+static int sequencer_change_path_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
+{
+ Scene *scene= CTX_data_scene(C);
+ Sequence *seq= seq_active_get(scene);
+
+ RNA_string_set(op->ptr, "directory", seq->strip->dir);
+
+ /* set default display depending on seq type */
+ if(seq->type == SEQ_IMAGE) {
+ RNA_boolean_set(op->ptr, "filter_movie", 0);
+ }
+ else {
+ RNA_boolean_set(op->ptr, "filter_image", 0);
+ }
+
+ WM_event_add_fileselect(C, op);
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+void SEQUENCER_OT_change_path(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Change Data/Files";
+ ot->idname= "SEQUENCER_OT_change_path";
+ ot->description="";
+
+ /* api callbacks */
+ ot->exec= sequencer_change_path_exec;
+ ot->invoke= sequencer_change_path_invoke;
+ ot->poll= sequencer_strip_has_path_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH|WM_FILESEL_FILEPATH|WM_FILESEL_FILES);
+}
diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h
index 209b39662aa..7ab76f9b6d7 100644
--- a/source/blender/editors/space_sequencer/sequencer_intern.h
+++ b/source/blender/editors/space_sequencer/sequencer_intern.h
@@ -70,6 +70,8 @@ int seq_effect_find_selected(struct Scene *scene, struct Sequence *activeseq, in
/* operator helpers */
int sequencer_edit_poll(struct bContext *C);
+int sequencer_strip_poll(struct bContext *C);
+int sequencer_strip_has_path_poll(struct bContext *C);
int sequencer_view_poll(struct bContext *C);
/* externs */
@@ -91,6 +93,7 @@ void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot);
void SEQUENCER_OT_swap_inputs(struct wmOperatorType *ot);
void SEQUENCER_OT_duplicate(struct wmOperatorType *ot);
void SEQUENCER_OT_delete(struct wmOperatorType *ot);
+void SEQUENCER_OT_offset_clear(struct wmOperatorType *ot);
void SEQUENCER_OT_images_separate(struct wmOperatorType *ot);
void SEQUENCER_OT_meta_toggle(struct wmOperatorType *ot);
void SEQUENCER_OT_meta_make(struct wmOperatorType *ot);
@@ -108,6 +111,10 @@ void SEQUENCER_OT_view_selected(struct wmOperatorType *ot);
void SEQUENCER_OT_view_zoom_ratio(struct wmOperatorType *ot);
void SEQUENCER_OT_view_ghost_border(struct wmOperatorType *ot);
+void SEQUENCER_OT_change_effect_input(struct wmOperatorType *ot);
+void SEQUENCER_OT_change_effect_type(struct wmOperatorType *ot);
+void SEQUENCER_OT_change_path(struct wmOperatorType *ot);
+
void SEQUENCER_OT_copy(struct wmOperatorType *ot);
void SEQUENCER_OT_paste(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c
index f5c26cb17d3..df33ce73b9c 100644
--- a/source/blender/editors/space_sequencer/sequencer_ops.c
+++ b/source/blender/editors/space_sequencer/sequencer_ops.c
@@ -68,6 +68,7 @@ void sequencer_operatortypes(void)
WM_operatortype_append(SEQUENCER_OT_swap_inputs);
WM_operatortype_append(SEQUENCER_OT_duplicate);
WM_operatortype_append(SEQUENCER_OT_delete);
+ WM_operatortype_append(SEQUENCER_OT_offset_clear);
WM_operatortype_append(SEQUENCER_OT_images_separate);
WM_operatortype_append(SEQUENCER_OT_meta_toggle);
WM_operatortype_append(SEQUENCER_OT_meta_make);
@@ -86,6 +87,10 @@ void sequencer_operatortypes(void)
WM_operatortype_append(SEQUENCER_OT_view_zoom_ratio);
WM_operatortype_append(SEQUENCER_OT_view_ghost_border);
+ WM_operatortype_append(SEQUENCER_OT_change_effect_input);
+ WM_operatortype_append(SEQUENCER_OT_change_effect_type);
+ WM_operatortype_append(SEQUENCER_OT_change_path);
+
/* sequencer_select.c */
WM_operatortype_append(SEQUENCER_OT_select_all_toggle);
WM_operatortype_append(SEQUENCER_OT_select_inverse);
@@ -145,6 +150,8 @@ void sequencer_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SEQUENCER_OT_reassign_inputs", RKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_reload", RKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "SEQUENCER_OT_offset_clear", OKEY, KM_PRESS, KM_ALT, 0);
+
WM_keymap_add_item(keymap, "SEQUENCER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", XKEY, KM_PRESS, 0, 0);
@@ -240,6 +247,8 @@ void sequencer_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SEQUENCER_OT_select_border", BKEY, KM_PRESS, 0, 0);
WM_keymap_add_menu(keymap, "SEQUENCER_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0);
+
+ WM_keymap_add_menu(keymap, "SEQUENCER_MT_change", CKEY, KM_PRESS, 0, 0);
kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", OKEY, KM_PRESS, 0, 0);
RNA_string_set(kmi->ptr, "data_path", "scene.sequence_editor.overlay_frame");
diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c
index 8d5f372f55e..0ac23765167 100644
--- a/source/blender/editors/space_sequencer/sequencer_select.c
+++ b/source/blender/editors/space_sequencer/sequencer_select.c
@@ -159,7 +159,7 @@ void select_surround_from_last(Scene *scene)
#endif
-static void select_single_seq(Scene *scene, Sequence *seq, int deselect_all) /* BRING BACK */
+static void UNUSED_FUNCTION(select_single_seq)(Scene *scene, Sequence *seq, int deselect_all) /* BRING BACK */
{
Editing *ed= seq_give_editing(scene, FALSE);
diff --git a/source/blender/editors/space_text/text_python.c b/source/blender/editors/space_text/text_python.c
index 6e6f131655b..51b4b838171 100644
--- a/source/blender/editors/space_text/text_python.c
+++ b/source/blender/editors/space_text/text_python.c
@@ -43,6 +43,7 @@
#include "BKE_text.h"
#include "BLI_blenlib.h"
+#include "BLI_utildefines.h"
#include "WM_types.h"
@@ -192,7 +193,7 @@ static void confirm_suggestion(Text *text, int skipleft)
// XXX
static int doc_scroll= 0;
-static short do_texttools(SpaceText *st, char ascii, unsigned short evnt, short val)
+static short UNUSED_FUNCTION(do_texttools)(SpaceText *st, char ascii, unsigned short evnt, short val)
{
ARegion *ar= NULL; // XXX
int qual= 0; // XXX
@@ -375,7 +376,7 @@ static short do_texttools(SpaceText *st, char ascii, unsigned short evnt, short
; // XXX redraw_alltext();
#endif
-static short do_textmarkers(SpaceText *st, char ascii, unsigned short evnt, short val)
+static short UNUSED_FUNCTION(do_textmarkers)(SpaceText *st, char ascii, unsigned short evnt, short val)
{
Text *text;
TextMarker *marker, *mrk, *nxt;
diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c
index f070bae4e54..71c85483244 100644
--- a/source/blender/editors/space_view3d/drawmesh.c
+++ b/source/blender/editors/space_view3d/drawmesh.c
@@ -29,7 +29,6 @@
* \ingroup spview3d
*/
-
#include <string.h>
#include <math.h>
@@ -70,24 +69,21 @@
#include "view3d_intern.h" // own include
-/***/
+/**************************** Face Select Mode *******************************/
- /* Flags for marked edges */
+/* Flags for marked edges */
enum {
eEdge_Visible = (1<<0),
eEdge_Select = (1<<1),
};
- /* Creates a hash of edges to flags indicating
- * adjacent tface select/active/etc flags.
- */
+/* Creates a hash of edges to flags indicating selected/visible */
static void get_marked_edge_info__orFlags(EdgeHash *eh, int v0, int v1, int flags)
{
int *flags_p;
- if (!BLI_edgehash_haskey(eh, v0, v1)) {
+ if(!BLI_edgehash_haskey(eh, v0, v1))
BLI_edgehash_insert(eh, v0, v1, NULL);
- }
flags_p = (int*) BLI_edgehash_lookup_p(eh, v0, v1);
*flags_p |= flags;
@@ -96,26 +92,25 @@ static void get_marked_edge_info__orFlags(EdgeHash *eh, int v0, int v1, int flag
static EdgeHash *get_tface_mesh_marked_edge_info(Mesh *me)
{
EdgeHash *eh = BLI_edgehash_new();
- int i;
MFace *mf;
+ int i;
- for (i=0; i<me->totface; i++) {
+ for(i=0; i<me->totface; i++) {
mf = &me->mface[i];
- if (mf->v3) {
- if (!(mf->flag&ME_HIDE)) {
- unsigned int flags = eEdge_Visible;
- if (mf->flag&ME_FACE_SEL) flags |= eEdge_Select;
-
- get_marked_edge_info__orFlags(eh, mf->v1, mf->v2, flags);
- get_marked_edge_info__orFlags(eh, mf->v2, mf->v3, flags);
- if (mf->v4) {
- get_marked_edge_info__orFlags(eh, mf->v3, mf->v4, flags);
- get_marked_edge_info__orFlags(eh, mf->v4, mf->v1, flags);
- } else {
- get_marked_edge_info__orFlags(eh, mf->v3, mf->v1, flags);
- }
+ if(!(mf->flag & ME_HIDE)) {
+ unsigned int flags = eEdge_Visible;
+ if(mf->flag & ME_FACE_SEL) flags |= eEdge_Select;
+
+ get_marked_edge_info__orFlags(eh, mf->v1, mf->v2, flags);
+ get_marked_edge_info__orFlags(eh, mf->v2, mf->v3, flags);
+
+ if(mf->v4) {
+ get_marked_edge_info__orFlags(eh, mf->v3, mf->v4, flags);
+ get_marked_edge_info__orFlags(eh, mf->v4, mf->v1, flags);
}
+ else
+ get_marked_edge_info__orFlags(eh, mf->v3, mf->v1, flags);
}
}
@@ -123,45 +118,24 @@ static EdgeHash *get_tface_mesh_marked_edge_info(Mesh *me)
}
-static int draw_tfaces3D__setHiddenOpts(void *userData, int index)
+static int draw_mesh_face_select__setHiddenOpts(void *userData, int index)
{
struct { Mesh *me; EdgeHash *eh; } *data = userData;
Mesh *me= data->me;
MEdge *med = &me->medge[index];
uintptr_t flags = (intptr_t) BLI_edgehash_lookup(data->eh, med->v1, med->v2);
- if((me->drawflag & ME_DRAWSEAMS) && (med->flag&ME_SEAM)) {
- return 0;
- } else if(me->drawflag & ME_DRAWEDGES){
- if (me->drawflag & ME_HIDDENEDGES) {
+ if(me->drawflag & ME_DRAWEDGES) {
+ if(me->drawflag & ME_HIDDENEDGES)
return 1;
- } else {
- return (flags & eEdge_Visible);
- }
- } else {
- return (flags & eEdge_Select);
- }
-}
-
-static int draw_tfaces3D__setSeamOpts(void *userData, int index)
-{
- struct { Mesh *me; EdgeHash *eh; } *data = userData;
- Mesh *me= data->me;
- MEdge *med = &data->me->medge[index];
- uintptr_t flags = (intptr_t) BLI_edgehash_lookup(data->eh, med->v1, med->v2);
-
- if (med->flag & ME_SEAM) {
- if (me->drawflag & ME_HIDDENEDGES) {
- return 1;
- } else {
+ else
return (flags & eEdge_Visible);
- }
- } else {
- return 0;
}
+ else
+ return (flags & eEdge_Select);
}
-static int draw_tfaces3D__setSelectOpts(void *userData, int index)
+static int draw_mesh_face_select__setSelectOpts(void *userData, int index)
{
struct { Mesh *me; EdgeHash *eh; } *data = userData;
MEdge *med = &data->me->medge[index];
@@ -170,45 +144,19 @@ static int draw_tfaces3D__setSelectOpts(void *userData, int index)
return flags & eEdge_Select;
}
-#if 0
-static int draw_tfaces3D__setActiveOpts(void *userData, int index)
-{
- struct { Mesh *me; EdgeHash *eh; } *data = userData;
- MEdge *med = &data->me->medge[index];
- uintptr_t flags = (intptr_t) BLI_edgehash_lookup(data->eh, med->v1, med->v2);
-
- if (flags & eEdge_Select) {
- return 1;
- } else {
- return 0;
- }
-}
-
-static int draw_tfaces3D__drawFaceOpts(void *userData, int index)
-{
- Mesh *me = (Mesh*)userData;
-
- MFace *mface = &me->mface[index];
- if (!(mface->flag&ME_HIDE) && (mface->flag&ME_FACE_SEL))
- return 2; /* Don't set color */
- else
- return 0;
-}
-#endif
-
/* draws unselected */
-static int draw_tfaces3D__drawFaceOptsInv(void *userData, int index)
+static int draw_mesh_face_select__drawFaceOptsInv(void *userData, int index)
{
Mesh *me = (Mesh*)userData;
MFace *mface = &me->mface[index];
- if (!(mface->flag&ME_HIDE) && !(mface->flag&ME_FACE_SEL))
+ if(!(mface->flag&ME_HIDE) && !(mface->flag&ME_FACE_SEL))
return 2; /* Don't set color */
else
return 0;
}
-static void draw_tfaces3D(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm, short draw_seams)
+static void draw_mesh_face_select(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm)
{
struct { Mesh *me; EdgeHash *eh; } data;
@@ -222,30 +170,16 @@ static void draw_tfaces3D(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm, short d
/* Draw (Hidden) Edges */
setlinestyle(1);
UI_ThemeColor(TH_EDGE_FACESEL);
- dm->drawMappedEdges(dm, draw_tfaces3D__setHiddenOpts, &data);
+ dm->drawMappedEdges(dm, draw_mesh_face_select__setHiddenOpts, &data);
setlinestyle(0);
- /* Draw Seams */
- if(draw_seams && me->drawflag & ME_DRAWSEAMS) {
- UI_ThemeColor(TH_EDGE_SEAM);
- glLineWidth(2);
- dm->drawMappedEdges(dm, draw_tfaces3D__setSeamOpts, &data);
- glLineWidth(1);
- }
-
/* Draw Selected Faces */
if(me->drawflag & ME_DRAWFACES) {
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-#if 0
- UI_ThemeColor4(TH_FACE_SELECT);
-
- dm->drawMappedFacesTex(dm, draw_tfaces3D__drawFaceOpts, (void*)me);
-#else
/* dull unselected faces so as not to get in the way of seeing color */
glColor4ub(96, 96, 96, 64);
- dm->drawMappedFacesTex(dm, draw_tfaces3D__drawFaceOptsInv, (void*)me);
-#endif
+ dm->drawMappedFacesTex(dm, draw_mesh_face_select__drawFaceOptsInv, (void*)me);
glDisable(GL_BLEND);
}
@@ -255,7 +189,7 @@ static void draw_tfaces3D(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm, short d
/* Draw Stippled Outline for selected faces */
glColor3ub(255, 255, 255);
setlinestyle(1);
- dm->drawMappedEdges(dm, draw_tfaces3D__setSelectOpts, &data);
+ dm->drawMappedEdges(dm, draw_mesh_face_select__setSelectOpts, &data);
setlinestyle(0);
bglPolygonOffset(rv3d->dist, 0.0); // resets correctly now, even after calling accumulated offsets
@@ -263,6 +197,8 @@ static void draw_tfaces3D(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm, short d
BLI_edgehash_free(data.eh, NULL);
}
+/***************************** Texture Drawing ******************************/
+
static Material *give_current_material_or_def(Object *ob, int matnr)
{
extern Material defmaterial; // render module abuse...
@@ -668,18 +604,21 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *o
if(ob->mode & OB_MODE_EDIT) {
dm->drawMappedFacesTex(dm, draw_em_tf_mapped__set_draw, me->edit_mesh);
- } else if(faceselect) {
+ }
+ else if(faceselect) {
if(ob->mode & OB_MODE_WEIGHT_PAINT)
dm->drawMappedFaces(dm, wpaint__setSolidDrawOptions, me, 1, GPU_enable_material);
else
dm->drawMappedFacesTex(dm, me->mface ? draw_tface_mapped__set_draw : NULL, me);
}
else {
- if( GPU_buffer_legacy(dm) )
+ if(GPU_buffer_legacy(dm)) {
dm->drawFacesTex(dm, draw_tface__set_draw_legacy);
+ }
else {
- if( !CustomData_has_layer(&dm->faceData,CD_TEXTURE_MCOL) )
+ if(!CustomData_has_layer(&dm->faceData,CD_TEXTURE_MCOL))
add_tface_color_layer(dm);
+
dm->drawFacesTex(dm, draw_tface__set_draw);
}
}
@@ -692,7 +631,7 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *o
/* draw edges and selected faces over textured mesh */
if(!(ob == scene->obedit) && faceselect)
- draw_tfaces3D(rv3d, me, dm, ob->mode & OB_MODE_WEIGHT_PAINT);
+ draw_mesh_face_select(rv3d, me, dm);
/* reset from negative scale correction */
glFrontFace(GL_CCW);
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 3746428b0c6..75cd250d831 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -5524,7 +5524,7 @@ static void drawObjectSelect(Scene *scene, View3D *v3d, ARegion *ar, Base *base)
}
}
else if(ob->type==OB_ARMATURE) {
- if(!(ob->mode & OB_MODE_POSE))
+ if(!(ob->mode & OB_MODE_POSE && base == scene->basact))
draw_armature(scene, v3d, ar, base, OB_WIRE, FALSE, TRUE);
}
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 6e3f6549ba3..7cf95261211 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2769,3 +2769,4 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
v3d->flag |= V3D_INVALID_BACKBUF;
}
+
diff --git a/source/blender/gpu/GPU_extensions.h b/source/blender/gpu/GPU_extensions.h
index 8bf923a5679..d0c7f9d494f 100644
--- a/source/blender/gpu/GPU_extensions.h
+++ b/source/blender/gpu/GPU_extensions.h
@@ -178,6 +178,7 @@ typedef struct GPUVertexAttribs {
struct {
int type;
int glindex;
+ int gltexco;
char name[32];
} layer[GPU_MAX_ATTRIB];
diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c
index 919b0eb0c29..8b0104fcdca 100644
--- a/source/blender/imbuf/intern/anim_movie.c
+++ b/source/blender/imbuf/intern/anim_movie.c
@@ -355,7 +355,7 @@ struct anim * IMB_open_anim( const char * name, int ib_flags) {
anim = (struct anim*)MEM_callocN(sizeof(struct anim), "anim struct");
if (anim != NULL) {
- strcpy(anim->name, name); /* fixme: possible buffer overflow here? */
+ BLI_strncpy(anim->name, name, sizeof(anim->name));
anim->ib_flags = ib_flags;
}
return(anim);
diff --git a/source/blender/imbuf/intern/filter.c b/source/blender/imbuf/intern/filter.c
index 1644e653df4..3f391b91c0f 100644
--- a/source/blender/imbuf/intern/filter.c
+++ b/source/blender/imbuf/intern/filter.c
@@ -371,11 +371,15 @@ void IMB_filter_extend(struct ImBuf *ibuf, char *mask, int filter)
float weight[25];
/* build a weights buffer */
- n= 2;
- k= 0;
+ n= 1;
+ /*k= 0;
for(i = -n; i <= n; i++)
for(j = -n; j <= n; j++)
weight[k++] = sqrt((float) i * i + j * j);
+ */
+ weight[0]=1; weight[1]=2; weight[2]=1;
+ weight[3]=2; weight[4]=0; weight[5]=2;
+ weight[6]=1; weight[7]=2; weight[8]=1;
/* run passes */
for(r = 0; cannot_early_out == 1 && r < filter; r++) {
@@ -393,10 +397,10 @@ void IMB_filter_extend(struct ImBuf *ibuf, char *mask, int filter)
float acc[4]={0,0,0,0};
k = 0;
- if (check_pixel_assigned(srcbuf, srcmask, filter_make_index(x-1, y, width, height), depth, is_float) ||
+ /*if (check_pixel_assigned(srcbuf, srcmask, filter_make_index(x-1, y, width, height), depth, is_float) ||
check_pixel_assigned(srcbuf, srcmask, filter_make_index(x+1, y, width, height), depth, is_float) ||
check_pixel_assigned(srcbuf, srcmask, filter_make_index(x, y-1, width, height), depth, is_float) ||
- check_pixel_assigned(srcbuf, srcmask, filter_make_index(x, y+1, width, height), depth, is_float)) {
+ check_pixel_assigned(srcbuf, srcmask, filter_make_index(x, y+1, width, height), depth, is_float))*/ {
for(i= -n; i<=n; i++) {
for(j=-n; j<=n; j++) {
if(i != 0 || j != 0) {
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index 3787675f339..053f3b38168 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -712,16 +712,16 @@ typedef struct ShapeKeyModifierData {
typedef struct SolidifyModifierData {
ModifierData modifier;
- char defgrp_name[32]; /* name of vertex group to use */
+ char defgrp_name[32]; /* name of vertex group to use */
float offset; /* new surface offset level*/
float offset_fac; /* midpoint of the offset */
+ float offset_fac_vg; /* factor for the minimum weight to use when vgroups are used, avoids 0.0 weights giving duplicate geometry */
float crease_inner;
float crease_outer;
float crease_rim;
int flag;
short mat_ofs;
short mat_ofs_rim;
- int pad;
} SolidifyModifierData;
#define MOD_SOLIDIFY_RIM (1<<0)
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index d6d571635f7..b5b178c6c01 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -656,7 +656,7 @@ int RNA_property_flag(PropertyRNA *prop);
void *RNA_property_py_data_get(PropertyRNA *prop);
int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop);
-int RNA_property_array_check(PointerRNA *ptr, PropertyRNA *prop);
+int RNA_property_array_check(PropertyRNA *prop);
int RNA_property_multi_array_length(PointerRNA *ptr, PropertyRNA *prop, int dimension);
int RNA_property_array_dimension(PointerRNA *ptr, PropertyRNA *prop, int length[]);
char RNA_property_array_item_char(PropertyRNA *prop, int index);
diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h
index ec213d6a496..f8199074f27 100644
--- a/source/blender/makesrna/RNA_types.h
+++ b/source/blender/makesrna/RNA_types.h
@@ -281,7 +281,7 @@ typedef struct ParameterList {
typedef struct ParameterIterator {
struct ParameterList *parms;
- PointerRNA funcptr;
+ /* PointerRNA funcptr; */ /*UNUSED*/
void *data;
int size, offset;
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c
index ac3508b9b4a..127b27f2e18 100644
--- a/source/blender/makesrna/intern/rna_access.c
+++ b/source/blender/makesrna/intern/rna_access.c
@@ -290,7 +290,7 @@ static int rna_ensure_property_array_length(PointerRNA *ptr, PropertyRNA *prop)
}
}
-static int rna_ensure_property_array_check(PointerRNA *UNUSED(ptr), PropertyRNA *prop)
+static int rna_ensure_property_array_check(PropertyRNA *prop)
{
if(prop->magic == RNA_MAGIC) {
return (prop->getlength || prop->totarraylength) ? 1:0;
@@ -767,9 +767,9 @@ int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop)
return rna_ensure_property_array_length(ptr, prop);
}
-int RNA_property_array_check(PointerRNA *ptr, PropertyRNA *prop)
+int RNA_property_array_check(PropertyRNA *prop)
{
- return rna_ensure_property_array_check(ptr, prop);
+ return rna_ensure_property_array_check(prop);
}
/* used by BPY to make an array from the python object */
@@ -1507,6 +1507,7 @@ int RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
IDProperty *idprop;
BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN);
+ BLI_assert(RNA_property_array_check(prop) == 0);
if((idprop=rna_idproperty_check(&prop, ptr)))
return IDP_Int(idprop);
@@ -1522,6 +1523,7 @@ void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, int value)
IDProperty *idprop;
BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN);
+ BLI_assert(RNA_property_array_check(prop) == 0);
/* just incase other values are passed */
if(value) value= 1;
@@ -1548,6 +1550,7 @@ void RNA_property_boolean_get_array(PointerRNA *ptr, PropertyRNA *prop, int *val
IDProperty *idprop;
BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if((idprop=rna_idproperty_check(&prop, ptr))) {
if(prop->arraydimension == 0)
@@ -1571,6 +1574,7 @@ int RNA_property_boolean_get_index(PointerRNA *ptr, PropertyRNA *prop, int index
int len= rna_ensure_property_array_length(ptr, prop);
BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if(len <= RNA_MAX_ARRAY_LENGTH) {
RNA_property_boolean_get_array(ptr, prop, tmp);
@@ -1594,6 +1598,7 @@ void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const in
IDProperty *idprop;
BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if((idprop=rna_idproperty_check(&prop, ptr))) {
if(prop->arraydimension == 0)
@@ -1627,6 +1632,7 @@ void RNA_property_boolean_set_index(PointerRNA *ptr, PropertyRNA *prop, int inde
int len= rna_ensure_property_array_length(ptr, prop);
BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if(len <= RNA_MAX_ARRAY_LENGTH) {
RNA_property_boolean_get_array(ptr, prop, tmp);
@@ -1649,6 +1655,7 @@ int RNA_property_boolean_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *prop)
BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop;
BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN);
+ BLI_assert(RNA_property_array_check(prop) == 0);
return bprop->defaultvalue;
}
@@ -1658,6 +1665,7 @@ void RNA_property_boolean_get_default_array(PointerRNA *UNUSED(ptr), PropertyRNA
BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop;
BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if(prop->arraydimension == 0)
values[0]= bprop->defaultvalue;
@@ -1673,6 +1681,7 @@ int RNA_property_boolean_get_default_index(PointerRNA *ptr, PropertyRNA *prop, i
int len= rna_ensure_property_array_length(ptr, prop);
BLI_assert(RNA_property_type(prop) == PROP_BOOLEAN);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if(len <= RNA_MAX_ARRAY_LENGTH) {
RNA_property_boolean_get_default_array(ptr, prop, tmp);
@@ -1696,6 +1705,7 @@ int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop)
IDProperty *idprop;
BLI_assert(RNA_property_type(prop) == PROP_INT);
+ BLI_assert(RNA_property_array_check(prop) == 0);
if((idprop=rna_idproperty_check(&prop, ptr)))
return IDP_Int(idprop);
@@ -1711,6 +1721,7 @@ void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value)
IDProperty *idprop;
BLI_assert(RNA_property_type(prop) == PROP_INT);
+ BLI_assert(RNA_property_array_check(prop) == 0);
/* useful to check on bad values but set function should clamp */
/* BLI_assert(RNA_property_int_clamp(ptr, prop, &value) == 0); */
@@ -1736,6 +1747,7 @@ void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values)
IDProperty *idprop;
BLI_assert(RNA_property_type(prop) == PROP_INT);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if((idprop=rna_idproperty_check(&prop, ptr))) {
if(prop->arraydimension == 0)
@@ -1796,6 +1808,7 @@ int RNA_property_int_get_index(PointerRNA *ptr, PropertyRNA *prop, int index)
int len= rna_ensure_property_array_length(ptr, prop);
BLI_assert(RNA_property_type(prop) == PROP_INT);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if(len <= RNA_MAX_ARRAY_LENGTH) {
RNA_property_int_get_array(ptr, prop, tmp);
@@ -1819,6 +1832,7 @@ void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *v
IDProperty *idprop;
BLI_assert(RNA_property_type(prop) == PROP_INT);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if((idprop=rna_idproperty_check(&prop, ptr))) {
if(prop->arraydimension == 0)
@@ -1852,6 +1866,7 @@ void RNA_property_int_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, i
int len= rna_ensure_property_array_length(ptr, prop);
BLI_assert(RNA_property_type(prop) == PROP_INT);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if(len <= RNA_MAX_ARRAY_LENGTH) {
RNA_property_int_get_array(ptr, prop, tmp);
@@ -1880,6 +1895,7 @@ void RNA_property_int_get_default_array(PointerRNA *UNUSED(ptr), PropertyRNA *pr
IntPropertyRNA *iprop= (IntPropertyRNA*)prop;
BLI_assert(RNA_property_type(prop) == PROP_INT);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if(prop->arraydimension == 0)
values[0]= iprop->defaultvalue;
@@ -1916,6 +1932,7 @@ float RNA_property_float_get(PointerRNA *ptr, PropertyRNA *prop)
IDProperty *idprop;
BLI_assert(RNA_property_type(prop) == PROP_FLOAT);
+ BLI_assert(RNA_property_array_check(prop) == 0);
if((idprop=rna_idproperty_check(&prop, ptr))) {
if(idprop->type == IDP_FLOAT)
@@ -1935,6 +1952,7 @@ void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value)
IDProperty *idprop;
BLI_assert(RNA_property_type(prop) == PROP_FLOAT);
+ BLI_assert(RNA_property_array_check(prop) == 0);
/* useful to check on bad values but set function should clamp */
/* BLI_assert(RNA_property_float_clamp(ptr, prop, &value) == 0); */
@@ -1966,6 +1984,7 @@ void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *val
int i;
BLI_assert(RNA_property_type(prop) == PROP_FLOAT);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if((idprop=rna_idproperty_check(&prop, ptr))) {
if(prop->arraydimension == 0)
@@ -2031,6 +2050,7 @@ float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index
int len= rna_ensure_property_array_length(ptr, prop);
BLI_assert(RNA_property_type(prop) == PROP_FLOAT);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if(len <= RNA_MAX_ARRAY_LENGTH) {
RNA_property_float_get_array(ptr, prop, tmp);
@@ -2056,6 +2076,7 @@ void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const floa
int i;
BLI_assert(RNA_property_type(prop) == PROP_FLOAT);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if((idprop=rna_idproperty_check(&prop, ptr))) {
if(prop->arraydimension == 0) {
@@ -2099,6 +2120,7 @@ void RNA_property_float_set_index(PointerRNA *ptr, PropertyRNA *prop, int index,
int len= rna_ensure_property_array_length(ptr, prop);
BLI_assert(RNA_property_type(prop) == PROP_FLOAT);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if(len <= RNA_MAX_ARRAY_LENGTH) {
RNA_property_float_get_array(ptr, prop, tmp);
@@ -2121,6 +2143,7 @@ float RNA_property_float_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *prop)
FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop;
BLI_assert(RNA_property_type(prop) == PROP_FLOAT);
+ BLI_assert(RNA_property_array_check(prop) == 0);
return fprop->defaultvalue;
}
@@ -2130,6 +2153,7 @@ void RNA_property_float_get_default_array(PointerRNA *UNUSED(ptr), PropertyRNA *
FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop;
BLI_assert(RNA_property_type(prop) == PROP_FLOAT);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if(prop->arraydimension == 0)
values[0]= fprop->defaultvalue;
@@ -2145,6 +2169,7 @@ float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, i
int len= rna_ensure_property_array_length(ptr, prop);
BLI_assert(RNA_property_type(prop) == PROP_FLOAT);
+ BLI_assert(RNA_property_array_check(prop) != 0);
if(len <= RNA_MAX_ARRAY_LENGTH) {
RNA_property_float_get_default_array(ptr, prop, tmp);
@@ -4592,7 +4617,8 @@ int RNA_parameter_list_ret_count(ParameterList *parms)
void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter)
{
- RNA_pointer_create(NULL, &RNA_Function, parms->func, &iter->funcptr);
+ /* may be useful but unused now */
+ /* RNA_pointer_create(NULL, &RNA_Function, parms->func, &iter->funcptr); */ /*UNUSED*/
iter->parms= parms;
iter->parm= parms->func->cont.properties.first;
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index ba655915fb6..5c5391b0bba 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -2265,6 +2265,13 @@ static void rna_def_modifier_solidify(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Thickness", "Thickness of the shell");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
+ prop= RNA_def_property(srna, "thickness_vertex_group", PROP_FLOAT, PROP_FACTOR);
+ RNA_def_property_float_sdna(prop, NULL, "offset_fac_vg");
+ RNA_def_property_range(prop, 0.0, 1.0);
+ RNA_def_property_ui_range(prop, 0, 1, 0.1, 3);
+ RNA_def_property_ui_text(prop, "Vertex Group Factor", "Thickness factor to use for zero vertex group influence");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_float_sdna(prop, NULL, "offset_fac");
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index 3371f194e6e..ad323b0aba4 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -2027,7 +2027,14 @@ static void rna_def_object(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Input Matrix", "Matrix access to location, rotation and scale (including deltas), before constraints and parenting are applied.");
RNA_def_property_float_funcs(prop, "rna_Object_matrix_basis_get", "rna_Object_matrix_basis_set", NULL);
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update");
-
+
+ /*parent_inverse*/
+ prop= RNA_def_property(srna, "matrix_parent_inverse", PROP_FLOAT, PROP_MATRIX);
+ RNA_def_property_float_sdna(prop, NULL, "parentinv");
+ RNA_def_property_multi_array(prop, 2, rna_matrix_dimsize_4x4);
+ RNA_def_property_ui_text(prop, "Matrix", "Inverse of object's parent matrix at time of parenting");
+ RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update");
+
/* collections */
prop= RNA_def_property(srna, "constraints", PROP_COLLECTION, PROP_NONE);
RNA_def_property_struct_type(prop, "Constraint");
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index 307cf0e175a..93adf808f83 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -1746,6 +1746,7 @@ static void rna_def_keyconfig(BlenderRNA *brna)
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", KMI_INACTIVE);
RNA_def_property_ui_text(prop, "Active", "Activate or deactivate item");
RNA_def_property_ui_icon(prop, ICON_CHECKBOX_DEHLT, 1);
+ RNA_def_property_update(prop, 0, "rna_KeyMapItem_update");
prop= RNA_def_property(srna, "is_user_modified", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KMI_USER_MODIFIED);
diff --git a/source/blender/modifiers/intern/MOD_armature.c b/source/blender/modifiers/intern/MOD_armature.c
index a0ee047e319..0b46d950950 100644
--- a/source/blender/modifiers/intern/MOD_armature.c
+++ b/source/blender/modifiers/intern/MOD_armature.c
@@ -213,4 +213,5 @@ ModifierTypeInfo modifierType_Armature = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c
index 90954fef1c7..c7fa75478f0 100644
--- a/source/blender/modifiers/intern/MOD_array.c
+++ b/source/blender/modifiers/intern/MOD_array.c
@@ -826,4 +826,5 @@ ModifierTypeInfo modifierType_Array = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_bevel.c b/source/blender/modifiers/intern/MOD_bevel.c
index 323ed71dd74..277f404f64d 100644
--- a/source/blender/modifiers/intern/MOD_bevel.c
+++ b/source/blender/modifiers/intern/MOD_bevel.c
@@ -150,4 +150,5 @@ ModifierTypeInfo modifierType_Bevel = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c
index 4b4d0124aae..761f8dd0add 100644
--- a/source/blender/modifiers/intern/MOD_boolean.c
+++ b/source/blender/modifiers/intern/MOD_boolean.c
@@ -197,4 +197,5 @@ ModifierTypeInfo modifierType_Boolean = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_build.c b/source/blender/modifiers/intern/MOD_build.c
index e293be5886d..1c56d81a798 100644
--- a/source/blender/modifiers/intern/MOD_build.c
+++ b/source/blender/modifiers/intern/MOD_build.c
@@ -299,5 +299,6 @@ ModifierTypeInfo modifierType_Build = {
/* dependsOnTime */ dependsOnTime,
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
- /* foreachIDLink */ NULL
+ /* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_cast.c b/source/blender/modifiers/intern/MOD_cast.c
index 14b23ba4972..4061128b5ad 100644
--- a/source/blender/modifiers/intern/MOD_cast.c
+++ b/source/blender/modifiers/intern/MOD_cast.c
@@ -632,4 +632,5 @@ ModifierTypeInfo modifierType_Cast = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_cloth.c b/source/blender/modifiers/intern/MOD_cloth.c
index 1d2a6b2f788..f5493162322 100644
--- a/source/blender/modifiers/intern/MOD_cloth.c
+++ b/source/blender/modifiers/intern/MOD_cloth.c
@@ -229,4 +229,5 @@ ModifierTypeInfo modifierType_Cloth = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ foreachIDLink,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_collision.c b/source/blender/modifiers/intern/MOD_collision.c
index 83ba8a12163..f4a9ea62ead 100644
--- a/source/blender/modifiers/intern/MOD_collision.c
+++ b/source/blender/modifiers/intern/MOD_collision.c
@@ -267,4 +267,5 @@ ModifierTypeInfo modifierType_Collision = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_curve.c b/source/blender/modifiers/intern/MOD_curve.c
index ecd10250c00..d928c239eac 100644
--- a/source/blender/modifiers/intern/MOD_curve.c
+++ b/source/blender/modifiers/intern/MOD_curve.c
@@ -162,4 +162,5 @@ ModifierTypeInfo modifierType_Curve = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_decimate.c b/source/blender/modifiers/intern/MOD_decimate.c
index ba9dbfc31ad..e3c39752bd1 100644
--- a/source/blender/modifiers/intern/MOD_decimate.c
+++ b/source/blender/modifiers/intern/MOD_decimate.c
@@ -218,4 +218,5 @@ ModifierTypeInfo modifierType_Decimate = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_displace.c b/source/blender/modifiers/intern/MOD_displace.c
index e0482e6b3fc..fb7aeacecc8 100644
--- a/source/blender/modifiers/intern/MOD_displace.c
+++ b/source/blender/modifiers/intern/MOD_displace.c
@@ -134,6 +134,12 @@ static void foreachIDLink(ModifierData *md, Object *ob,
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
}
+static void foreachTexLink(ModifierData *md, Object *ob,
+ TexWalkFunc walk, void *userData)
+{
+ walk(userData, ob, md, "texture");
+}
+
static int isDisabled(ModifierData *md, int UNUSED(useRenderParams))
{
DisplaceModifierData *dmd = (DisplaceModifierData*) md;
@@ -283,4 +289,5 @@ ModifierTypeInfo modifierType_Displace = {
/* dependsOnNormals */ dependsOnNormals,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ foreachIDLink,
+ /* foreachTexLink */ foreachTexLink,
};
diff --git a/source/blender/modifiers/intern/MOD_edgesplit.c b/source/blender/modifiers/intern/MOD_edgesplit.c
index 8d0aea41b5c..db491742265 100644
--- a/source/blender/modifiers/intern/MOD_edgesplit.c
+++ b/source/blender/modifiers/intern/MOD_edgesplit.c
@@ -1311,4 +1311,5 @@ ModifierTypeInfo modifierType_EdgeSplit = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_explode.c b/source/blender/modifiers/intern/MOD_explode.c
index 5da2464ef89..3d01661bc79 100644
--- a/source/blender/modifiers/intern/MOD_explode.c
+++ b/source/blender/modifiers/intern/MOD_explode.c
@@ -1037,4 +1037,5 @@ ModifierTypeInfo modifierType_Explode = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_fluidsim.c b/source/blender/modifiers/intern/MOD_fluidsim.c
index 354dc33ffe0..cce288b4ad5 100644
--- a/source/blender/modifiers/intern/MOD_fluidsim.c
+++ b/source/blender/modifiers/intern/MOD_fluidsim.c
@@ -162,4 +162,5 @@ ModifierTypeInfo modifierType_Fluidsim = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_hook.c b/source/blender/modifiers/intern/MOD_hook.c
index ea8d602dd7a..785abc7d4d1 100644
--- a/source/blender/modifiers/intern/MOD_hook.c
+++ b/source/blender/modifiers/intern/MOD_hook.c
@@ -289,4 +289,5 @@ ModifierTypeInfo modifierType_Hook = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_lattice.c b/source/blender/modifiers/intern/MOD_lattice.c
index 694f8fb3e52..31c17fb7376 100644
--- a/source/blender/modifiers/intern/MOD_lattice.c
+++ b/source/blender/modifiers/intern/MOD_lattice.c
@@ -156,4 +156,5 @@ ModifierTypeInfo modifierType_Lattice = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_mask.c b/source/blender/modifiers/intern/MOD_mask.c
index 94442d96367..b7cdac9e246 100644
--- a/source/blender/modifiers/intern/MOD_mask.c
+++ b/source/blender/modifiers/intern/MOD_mask.c
@@ -407,4 +407,5 @@ ModifierTypeInfo modifierType_Mask = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c
index 3903f2602e4..8a0e64e7ee4 100644
--- a/source/blender/modifiers/intern/MOD_meshdeform.c
+++ b/source/blender/modifiers/intern/MOD_meshdeform.c
@@ -463,4 +463,5 @@ ModifierTypeInfo modifierType_MeshDeform = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_mirror.c b/source/blender/modifiers/intern/MOD_mirror.c
index b1c765e5c9b..7cde87b20d9 100644
--- a/source/blender/modifiers/intern/MOD_mirror.c
+++ b/source/blender/modifiers/intern/MOD_mirror.c
@@ -363,4 +363,5 @@ ModifierTypeInfo modifierType_Mirror = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_multires.c b/source/blender/modifiers/intern/MOD_multires.c
index 134574ae6c4..48b1112cad2 100644
--- a/source/blender/modifiers/intern/MOD_multires.c
+++ b/source/blender/modifiers/intern/MOD_multires.c
@@ -131,4 +131,5 @@ ModifierTypeInfo modifierType_Multires = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_none.c b/source/blender/modifiers/intern/MOD_none.c
index 48c5b9a4c08..8fed2150a75 100644
--- a/source/blender/modifiers/intern/MOD_none.c
+++ b/source/blender/modifiers/intern/MOD_none.c
@@ -77,4 +77,5 @@ ModifierTypeInfo modifierType_None = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_particleinstance.c b/source/blender/modifiers/intern/MOD_particleinstance.c
index 46d53e0db15..b0b43e018f7 100644
--- a/source/blender/modifiers/intern/MOD_particleinstance.c
+++ b/source/blender/modifiers/intern/MOD_particleinstance.c
@@ -350,4 +350,5 @@ ModifierTypeInfo modifierType_ParticleInstance = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_particlesystem.c b/source/blender/modifiers/intern/MOD_particlesystem.c
index 533bfd203b5..5635ba33d80 100644
--- a/source/blender/modifiers/intern/MOD_particlesystem.c
+++ b/source/blender/modifiers/intern/MOD_particlesystem.c
@@ -242,4 +242,5 @@ ModifierTypeInfo modifierType_ParticleSystem = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_screw.c b/source/blender/modifiers/intern/MOD_screw.c
index 17e350482f0..c5fdf465a0a 100644
--- a/source/blender/modifiers/intern/MOD_screw.c
+++ b/source/blender/modifiers/intern/MOD_screw.c
@@ -903,4 +903,5 @@ ModifierTypeInfo modifierType_Screw = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_shapekey.c b/source/blender/modifiers/intern/MOD_shapekey.c
index 94d23de6573..6e55466c1e4 100644
--- a/source/blender/modifiers/intern/MOD_shapekey.c
+++ b/source/blender/modifiers/intern/MOD_shapekey.c
@@ -148,5 +148,6 @@ ModifierTypeInfo modifierType_ShapeKey = {
/* dependsOnTime */ NULL,
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
- /* foreachIDLink */ NULL
+ /* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_shrinkwrap.c b/source/blender/modifiers/intern/MOD_shrinkwrap.c
index e1fc4bc969f..ba25df19b3e 100644
--- a/source/blender/modifiers/intern/MOD_shrinkwrap.c
+++ b/source/blender/modifiers/intern/MOD_shrinkwrap.c
@@ -186,4 +186,5 @@ ModifierTypeInfo modifierType_Shrinkwrap = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_simpledeform.c b/source/blender/modifiers/intern/MOD_simpledeform.c
index 5efd6cd28ec..b2e3c9532b6 100644
--- a/source/blender/modifiers/intern/MOD_simpledeform.c
+++ b/source/blender/modifiers/intern/MOD_simpledeform.c
@@ -385,4 +385,5 @@ ModifierTypeInfo modifierType_SimpleDeform = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_smoke.c b/source/blender/modifiers/intern/MOD_smoke.c
index b6203bb3c1d..2e156d82ec6 100644
--- a/source/blender/modifiers/intern/MOD_smoke.c
+++ b/source/blender/modifiers/intern/MOD_smoke.c
@@ -189,4 +189,5 @@ ModifierTypeInfo modifierType_Smoke = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ foreachIDLink,
+ /* foreachTexLink */ NULL
};
diff --git a/source/blender/modifiers/intern/MOD_smooth.c b/source/blender/modifiers/intern/MOD_smooth.c
index 28a31b84ea5..16898a80b53 100644
--- a/source/blender/modifiers/intern/MOD_smooth.c
+++ b/source/blender/modifiers/intern/MOD_smooth.c
@@ -270,4 +270,5 @@ ModifierTypeInfo modifierType_Smooth = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_softbody.c b/source/blender/modifiers/intern/MOD_softbody.c
index 25996286735..c475328676b 100644
--- a/source/blender/modifiers/intern/MOD_softbody.c
+++ b/source/blender/modifiers/intern/MOD_softbody.c
@@ -87,4 +87,5 @@ ModifierTypeInfo modifierType_Softbody = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_solidify.c b/source/blender/modifiers/intern/MOD_solidify.c
index 390a780e9e6..afe6da8b38a 100644
--- a/source/blender/modifiers/intern/MOD_solidify.c
+++ b/source/blender/modifiers/intern/MOD_solidify.c
@@ -232,8 +232,10 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
float (*vert_nors)[3]= NULL;
- float const ofs_orig= - (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset);
- float const ofs_new= smd->offset - (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset);
+ const float ofs_orig= - (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset);
+ const float ofs_new= smd->offset - (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset);
+ const float offset_fac_vg= smd->offset_fac_vg;
+ const float offset_fac_vg_inv= 1.0f - smd->offset_fac_vg;
/* weights */
MDeformVert *dvert, *dv= NULL;
@@ -391,8 +393,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
dv= dvert;
for(i=0; i<numVerts; i++, mv++) {
if(dv) {
- if(defgrp_invert) scalar_short_vgroup = scalar_short * (1.0f - defvert_find_weight(dv, defgrp_index));
- else scalar_short_vgroup = scalar_short * defvert_find_weight(dv, defgrp_index);
+ if(defgrp_invert) scalar_short_vgroup = 1.0f - defvert_find_weight(dv, defgrp_index);
+ else scalar_short_vgroup = defvert_find_weight(dv, defgrp_index);
+ scalar_short_vgroup= (offset_fac_vg + (scalar_short_vgroup * offset_fac_vg_inv)) * scalar_short;
dv++;
}
VECADDFAC(mv->co, mv->co, mv->no, scalar_short_vgroup);
@@ -405,8 +408,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
dv= dvert;
for(i=0; i<numVerts; i++, mv++) {
if(dv) {
- if(defgrp_invert) scalar_short_vgroup = scalar_short * (1.0f - defvert_find_weight(dv, defgrp_index));
- else scalar_short_vgroup = scalar_short * defvert_find_weight(dv, defgrp_index);
+ if(defgrp_invert) scalar_short_vgroup = 1.0f - defvert_find_weight(dv, defgrp_index);
+ else scalar_short_vgroup = defvert_find_weight(dv, defgrp_index);
+ scalar_short_vgroup= (offset_fac_vg + (scalar_short_vgroup * offset_fac_vg_inv)) * scalar_short;
dv++;
}
VECADDFAC(mv->co, mv->co, mv->no, scalar_short_vgroup);
@@ -466,15 +470,21 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
/* vertex group support */
if(dvert) {
+ float scalar;
+
dv= dvert;
if(defgrp_invert) {
for(i=0; i<numVerts; i++, dv++) {
- vert_angles[i] *= (1.0f - defvert_find_weight(dv, defgrp_index));
+ scalar= 1.0f - defvert_find_weight(dv, defgrp_index);
+ scalar= offset_fac_vg + (scalar * offset_fac_vg_inv);
+ vert_angles[i] *= scalar;
}
}
else {
for(i=0; i<numVerts; i++, dv++) {
- vert_angles[i] *= defvert_find_weight(dv, defgrp_index);
+ scalar= defvert_find_weight(dv, defgrp_index);
+ scalar= offset_fac_vg + (scalar * offset_fac_vg_inv);
+ vert_angles[i] *= scalar;
}
}
}
@@ -689,5 +699,6 @@ ModifierTypeInfo modifierType_Solidify = {
/* dependsOnTime */ NULL,
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
- /* foreachIDLink */ NULL
+ /* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_subsurf.c b/source/blender/modifiers/intern/MOD_subsurf.c
index f780721ca07..6c825b213b8 100644
--- a/source/blender/modifiers/intern/MOD_subsurf.c
+++ b/source/blender/modifiers/intern/MOD_subsurf.c
@@ -152,4 +152,6 @@ ModifierTypeInfo modifierType_Subsurf = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
+
diff --git a/source/blender/modifiers/intern/MOD_surface.c b/source/blender/modifiers/intern/MOD_surface.c
index 382358b179e..e30b7f2392d 100644
--- a/source/blender/modifiers/intern/MOD_surface.c
+++ b/source/blender/modifiers/intern/MOD_surface.c
@@ -192,4 +192,5 @@ ModifierTypeInfo modifierType_Surface = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_uvproject.c b/source/blender/modifiers/intern/MOD_uvproject.c
index 922ae8c1e92..912c14adfdd 100644
--- a/source/blender/modifiers/intern/MOD_uvproject.c
+++ b/source/blender/modifiers/intern/MOD_uvproject.c
@@ -434,4 +434,5 @@ ModifierTypeInfo modifierType_UVProject = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ foreachIDLink,
+ /* foreachTexLink */ NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_warp.c b/source/blender/modifiers/intern/MOD_warp.c
index 2c77b486263..c1c3604d598 100644
--- a/source/blender/modifiers/intern/MOD_warp.c
+++ b/source/blender/modifiers/intern/MOD_warp.c
@@ -140,6 +140,11 @@ static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *u
walk(userData, ob, (ID **)&wmd->map_object);
}
+static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void *userData)
+{
+ walk(userData, ob, md, "texture");
+}
+
static void updateDepgraph(ModifierData *md, DagForest *forest, struct Scene *UNUSED(scene),
Object *UNUSED(ob), DagNode *obNode)
{
@@ -364,4 +369,5 @@ ModifierTypeInfo modifierType_Warp = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ foreachIDLink,
+ /* foreachTexLink */ foreachTexLink,
};
diff --git a/source/blender/modifiers/intern/MOD_wave.c b/source/blender/modifiers/intern/MOD_wave.c
index ca8161fe364..4b5769ff603 100644
--- a/source/blender/modifiers/intern/MOD_wave.c
+++ b/source/blender/modifiers/intern/MOD_wave.c
@@ -126,6 +126,12 @@ static void foreachIDLink(ModifierData *md, Object *ob,
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
}
+static void foreachTexLink(ModifierData *md, Object *ob,
+ TexWalkFunc walk, void *userData)
+{
+ walk(userData, ob, md, "texture");
+}
+
static void updateDepgraph(ModifierData *md, DagForest *forest,
Scene *UNUSED(scene),
Object *UNUSED(ob),
@@ -466,4 +472,5 @@ ModifierTypeInfo modifierType_Wave = {
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ foreachIDLink,
+ /* foreachTexLink */ foreachTexLink,
};
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index 4447a0476f4..ba8145c2773 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -856,7 +856,7 @@ static PyObject *pyrna_prop_str(BPy_PropertyRNA *self)
if(type==PROP_COLLECTION) {
len= pyrna_prop_collection_length(self);
}
- else if (RNA_property_array_check(&self->ptr, self->prop)) {
+ else if (RNA_property_array_check(self->prop)) {
len= pyrna_prop_array_length((BPy_PropertyArrayRNA *)self);
}
@@ -1224,7 +1224,7 @@ PyObject *pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
PyObject *ret;
int type= RNA_property_type(prop);
- if (RNA_property_array_check(ptr, prop)) {
+ if (RNA_property_array_check(prop)) {
return pyrna_py_from_array(ptr, prop);
}
@@ -1369,7 +1369,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
int type= RNA_property_type(prop);
- if (RNA_property_array_check(ptr, prop)) {
+ if (RNA_property_array_check(prop)) {
/* done getting the length */
if(pyrna_py_to_array(ptr, prop, data, value, error_prefix) == -1) {
return -1;
@@ -4088,7 +4088,7 @@ static PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *dat
int type= RNA_property_type(prop);
int flag= RNA_property_flag(prop);
- if(RNA_property_array_check(ptr, prop)) {
+ if(RNA_property_array_check(prop)) {
int a, len;
if (flag & PROP_DYNAMIC) {
@@ -5519,7 +5519,7 @@ PyObject *pyrna_prop_CreatePyObject(PointerRNA *ptr, PropertyRNA *prop)
{
BPy_PropertyRNA *pyrna;
- if (RNA_property_array_check(ptr, prop) == 0) {
+ if (RNA_property_array_check(prop) == 0) {
PyTypeObject *type;
if (RNA_property_type(prop) != PROP_COLLECTION) {
diff --git a/source/blender/python/intern/bpy_rna_anim.c b/source/blender/python/intern/bpy_rna_anim.c
index 30d83e196ba..8bde1db96ca 100644
--- a/source/blender/python/intern/bpy_rna_anim.c
+++ b/source/blender/python/intern/bpy_rna_anim.c
@@ -107,7 +107,7 @@ static int pyrna_struct_anim_args_parse(PointerRNA *ptr, const char *error_prefi
return -1;
}
- if(RNA_property_array_check(&r_ptr, prop) == 0) {
+ if(RNA_property_array_check(prop) == 0) {
if((*index) == -1) {
*index= 0;
}
diff --git a/source/blender/python/mathutils/mathutils_Vector.c b/source/blender/python/mathutils/mathutils_Vector.c
index a954c07c98d..56c1334ecac 100644
--- a/source/blender/python/mathutils/mathutils_Vector.c
+++ b/source/blender/python/mathutils/mathutils_Vector.c
@@ -37,8 +37,6 @@
#include "BLI_math.h"
#include "BLI_utildefines.h"
-extern void PyC_LineSpit(void);
-
#define MAX_DIMENSIONS 4
/* Swizzle axes get packed into a single value that is used as a closure. Each
@@ -1161,28 +1159,18 @@ static PyObject *Vector_mul(PyObject *v1, PyObject *v2)
}
else if (vec1) {
if (MatrixObject_Check(v2)) {
- extern void PyC_LineSpit(void);
-
- /* VEC * MATRIX */
- /* this is deprecated!, use the reverse instead */
- float tvec[MAX_DIMENSIONS];
-
/* ------ to be removed ------*/
-#ifndef MATH_STANDALONE
-#ifdef WITH_ASSERT_ABORT
+#if 1
PyErr_SetString(PyExc_ValueError,
"(Vector * Matrix) is now removed, reverse the "
"order (promoted to an Error for Debug builds)");
return NULL;
#else
- printf("Warning: (Vector * Matrix) is now deprecated, "
- "reverse the multiplication order in the script.\n");
- PyC_LineSpit();
-#endif
-#endif /* ifndef MATH_STANDALONE */
-/* ------ to be removed ------*/
+ /* VEC * MATRIX */
+ /* this is deprecated!, use the reverse instead */
+ float tvec[MAX_DIMENSIONS];
if(BaseMath_ReadCallback((MatrixObject *)v2) == -1)
return NULL;
@@ -1191,9 +1179,18 @@ static PyObject *Vector_mul(PyObject *v1, PyObject *v2)
}
return newVectorObject(tvec, vec1->size, Py_NEW, Py_TYPE(vec1));
+#endif
+/* ------ to be removed ------*/
}
else if (QuaternionObject_Check(v2)) {
/* VEC * QUAT */
+/* ------ to be removed ------*/
+#if 1
+ PyErr_SetString(PyExc_ValueError,
+ "(Vector * Quat) is now removed, reverse the "
+ "order (promoted to an Error for Debug builds)");
+ return NULL;
+#else
QuaternionObject *quat2 = (QuaternionObject*)v2;
float tvec[3];
@@ -1207,26 +1204,11 @@ static PyObject *Vector_mul(PyObject *v1, PyObject *v2)
return NULL;
}
-
-/* ------ to be removed ------*/
-#ifndef MATH_STANDALONE
-#ifdef WITH_ASSERT_ABORT
- PyErr_SetString(PyExc_ValueError,
- "(Vector * Quat) is now removed, reverse the "
- "order (promoted to an Error for Debug builds)");
- return NULL;
-#else
- printf("Warning: (Vector * Quat) is now deprecated, "
- "reverse the multiplication order in the script.\n");
- PyC_LineSpit();
-#endif
-#endif /* ifndef MATH_STANDALONE */
-/* ------ to be removed ------*/
-
-
copy_v3_v3(tvec, vec1->vec);
mul_qt_v3(quat2->quat, tvec);
return newVectorObject(tvec, 3, Py_NEW, Py_TYPE(vec1));
+#endif
+/* ------ to be removed ------*/
}
else if (((scalar= PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred())==0) { /* VEC * FLOAT */
return vector_mul_float(vec1, scalar);
@@ -1260,6 +1242,14 @@ static PyObject *Vector_imul(PyObject *v1, PyObject *v2)
/* only support vec*=float and vec*=mat
vec*=vec result is a float so that wont work */
if (MatrixObject_Check(v2)) {
+/* ------ to be removed ------*/
+#if 1
+ PyErr_SetString(PyExc_ValueError,
+ "(Vector *= Matrix) is now removed, reverse the "
+ "order (promoted to an Error for Debug builds) "
+ "and uses the non in-place multiplication.");
+ return NULL;
+#else
float rvec[MAX_DIMENSIONS];
if(BaseMath_ReadCallback((MatrixObject *)v2) == -1)
return NULL;
@@ -1267,28 +1257,21 @@ static PyObject *Vector_imul(PyObject *v1, PyObject *v2)
if(column_vector_multiplication(rvec, vec, (MatrixObject*)v2) == -1)
return NULL;
-
-/* ------ to be removed ------*/
-#ifndef MATH_STANDALONE
-#ifdef WITH_ASSERT_ABORT
- PyErr_SetString(PyExc_ValueError,
- "(Vector *= Matrix) is now removed, reverse the "
- "order (promoted to an Error for Debug builds) "
- "and uses the non in-place multiplication.");
- return NULL;
-#else
- printf("Warning: (Vector *= Matrix) is now deprecated, "
- "reverse the (non in-place) multiplication order in the script.\n");
- PyC_LineSpit();
+ memcpy(vec->vec, rvec, sizeof(float) * vec->size);
#endif
-#endif /* ifndef MATH_STANDALONE */
/* ------ to be removed ------*/
-
-
- memcpy(vec->vec, rvec, sizeof(float) * vec->size);
}
else if (QuaternionObject_Check(v2)) {
/* VEC *= QUAT */
+
+/* ------ to be removed ------*/
+#if 1
+ PyErr_SetString(PyExc_ValueError,
+ "(Vector *= Quat) is now removed, reverse the "
+ "order (promoted to an Error for Debug builds) "
+ "and uses the non in-place multiplication.");
+ return NULL;
+#else
QuaternionObject *quat2 = (QuaternionObject*)v2;
if(vec->size != 3) {
@@ -1302,25 +1285,9 @@ static PyObject *Vector_imul(PyObject *v1, PyObject *v2)
return NULL;
}
-
-/* ------ to be removed ------*/
-#ifndef MATH_STANDALONE
-#ifdef WITH_ASSERT_ABORT
- PyErr_SetString(PyExc_ValueError,
- "(Vector *= Quat) is now removed, reverse the "
- "order (promoted to an Error for Debug builds) "
- "and uses the non in-place multiplication.");
- return NULL;
-#else
- printf("Warning: (Vector *= Quat) is now deprecated, "
- "reverse the (non in-place) multiplication order in the script.\n");
- PyC_LineSpit();
+ mul_qt_v3(quat2->quat, vec->vec);
#endif
-#endif /* ifndef MATH_STANDALONE */
/* ------ to be removed ------*/
-
-
- mul_qt_v3(quat2->quat, vec->vec);
}
else if (((scalar= PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred())==0) { /* VEC *= FLOAT */
mul_vn_fl(vec->vec, vec->size, scalar);
@@ -1728,6 +1695,21 @@ static int Vector_setLength(VectorObject *self, PyObject *value)
return 0;
}
+/* vector.length_squared */
+static PyObject *Vector_getLengthSquared(VectorObject *self, void *UNUSED(closure))
+{
+ double dot = 0.0f;
+ int i;
+
+ if(BaseMath_ReadCallback(self) == -1)
+ return NULL;
+
+ for(i = 0; i < self->size; i++){
+ dot += (double)(self->vec[i] * self->vec[i]);
+ }
+ return PyFloat_FromDouble(dot);
+}
+
/* Get a new Vector according to the provided swizzle. This function has little
error checking, as we are in control of the inputs: the closure is set by us
in Vector_createSwizzleGetSeter. */
@@ -1851,6 +1833,7 @@ static PyGetSetDef Vector_getseters[] = {
{(char *)"z", (getter)Vector_getAxis, (setter)Vector_setAxis, (char *)"Vector Z axis (3D Vectors only).\n\n:type: float", (void *)2},
{(char *)"w", (getter)Vector_getAxis, (setter)Vector_setAxis, (char *)"Vector W axis (4D Vectors only).\n\n:type: float", (void *)3},
{(char *)"length", (getter)Vector_getLength, (setter)Vector_setLength, (char *)"Vector Length.\n\n:type: float", NULL},
+ {(char *)"length_squared", (getter)Vector_getLengthSquared, (setter)NULL, (char *)"Vector length squared (v.dot(v)).\n\n:type: float", NULL},
{(char *)"magnitude", (getter)Vector_getLength, (setter)Vector_setLength, (char *)"Vector Length.\n\n:type: float", NULL},
{(char *)"is_wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, (char *)BaseMathObject_Wrapped_doc, NULL},
{(char *)"owner", (getter)BaseMathObject_getOwner, (setter)NULL, (char *)BaseMathObject_Owner_doc, NULL},
diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c
index 34d3adcf15b..d62f411a7c5 100644
--- a/source/blender/render/intern/source/rayshade.c
+++ b/source/blender/render/intern/source/rayshade.c
@@ -1679,7 +1679,7 @@ static void ray_trace_shadow_tra(Isect *is, ShadeInput *origshi, int depth, int
/* not used, test function for ambient occlusion (yaf: pathlight) */
/* main problem; has to be called within shading loop, giving unwanted recursion */
-static int ray_trace_shadow_rad(ShadeInput *ship, ShadeResult *shr)
+static int UNUSED_FUNCTION(ray_trace_shadow_rad)(ShadeInput *ship, ShadeResult *shr)
{
static int counter=0, only_one= 0;
extern float hashvectf[];
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index d8c6933a93d..e1b8cefca4b 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -222,6 +222,7 @@ wmOperator *WM_operator_last_redo(const struct bContext *C);
#define WM_FILESEL_DIRECTORY (1 << 1)
#define WM_FILESEL_FILENAME (1 << 2)
#define WM_FILESEL_FILEPATH (1 << 3)
+#define WM_FILESEL_FILES (1 << 4)
/* operator as a python command (resultuing string must be free'd) */
diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index 75638382399..a857577fcc8 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -455,7 +455,7 @@ void WM_read_file(bContext *C, const char *filepath, ReportList *reports)
/* called on startup, (context entirely filled with NULLs) */
/* or called for 'New File' */
/* op can be NULL */
-int WM_read_homefile(bContext *C, ReportList *reports, short from_memory)
+int WM_read_homefile(bContext *C, ReportList *UNUSED(reports), short from_memory)
{
ListBase wmbase;
char tstr[FILE_MAXDIR+FILE_MAXFILE];
@@ -471,7 +471,6 @@ int WM_read_homefile(bContext *C, ReportList *reports, short from_memory)
} else {
tstr[0] = '\0';
from_memory = 1;
- BKE_report(reports, RPT_INFO, "Config directory with "STRINGIFY(BLENDER_STARTUP_FILE)" file not found.");
}
}
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index 2fb0a1b2ab9..6887aa4c717 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -106,6 +106,9 @@ static int wm_keymap_item_equals_result(wmKeyMapItem *a, wmKeyMapItem *b)
(a->ptr && b->ptr && IDP_EqualsProperties(a->ptr->data, b->ptr->data))))
return 0;
+ if((a->flag & KMI_INACTIVE) != (b->flag & KMI_INACTIVE))
+ return 0;
+
return (a->propvalue == b->propvalue);
}
@@ -1009,7 +1012,8 @@ void WM_keyconfig_update(wmWindowManager *wm)
addonmap= WM_keymap_list_find(&wm->addonconf->keymaps, km->idname, km->spaceid, km->regionid);
/* diff */
- wm_keymap_diff_update(&U.user_keymaps, defaultmap, addonmap, km);
+ if(defaultmap)
+ wm_keymap_diff_update(&U.user_keymaps, defaultmap, addonmap, km);
}
}
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 66467b310ee..1beb5b3dda3 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -811,6 +811,9 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type,
if(flag & WM_FILESEL_FILENAME)
RNA_def_string_file_name(ot->srna, "filename", "", FILE_MAX, "File Name", "Name of the file");
+ if(flag & WM_FILESEL_FILES)
+ RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", "");
+
if (action == FILE_SAVE) {
prop= RNA_def_boolean(ot->srna, "check_existing", 1, "Check Existing", "Check and warn on overwriting existing files");
RNA_def_property_flag(prop, PROP_HIDDEN);
@@ -1748,14 +1751,12 @@ static void WM_OT_link_append(wmOperatorType *ot)
ot->flag |= OPTYPE_UNDO;
- WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_LOADLIB, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_DIRECTORY|WM_FILESEL_FILENAME| WM_FILESEL_RELPATH);
+ WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_LOADLIB, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_DIRECTORY|WM_FILESEL_FILENAME| WM_FILESEL_RELPATH|WM_FILESEL_FILES);
RNA_def_boolean(ot->srna, "link", 1, "Link", "Link the objects or datablocks rather than appending");
RNA_def_boolean(ot->srna, "autoselect", 1, "Select", "Select the linked objects");
RNA_def_boolean(ot->srna, "active_layer", 1, "Active Layer", "Put the linked objects on the active layer");
RNA_def_boolean(ot->srna, "instance_groups", 1, "Instance Groups", "Create instances for each group as a DupliGroup");
-
- RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", "");
}
/* *************** recover last session **************** */
@@ -2009,8 +2010,6 @@ static void WM_OT_save_mainfile(wmOperatorType *ot)
static int wm_collada_export_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
- int selected = 0;
-
if(!RNA_property_is_set(op->ptr, "filepath")) {
char filepath[FILE_MAX];
BLI_strncpy(filepath, G.main->name, sizeof(filepath));
diff --git a/source/blender/windowmanager/intern/wm_subwindow.c b/source/blender/windowmanager/intern/wm_subwindow.c
index a87001fb1b4..8ea1f2fdd0a 100644
--- a/source/blender/windowmanager/intern/wm_subwindow.c
+++ b/source/blender/windowmanager/intern/wm_subwindow.c
@@ -378,7 +378,8 @@ unsigned int index_to_framebuffer(int index)
void WM_set_framebuffer_index_color(int index)
{
- cpack(index_to_framebuffer(index));
+ const int col= index_to_framebuffer(index);
+ cpack(col);
}
int WM_framebuffer_to_index(unsigned int col)
diff --git a/source/gameengine/Ketsji/KX_Light.cpp b/source/gameengine/Ketsji/KX_Light.cpp
index 49f00e39110..3f09eee013e 100644
--- a/source/gameengine/Ketsji/KX_Light.cpp
+++ b/source/gameengine/Ketsji/KX_Light.cpp
@@ -254,8 +254,12 @@ void KX_LightObject::BindShadowBuffer(RAS_IRasterizer *ras, KX_Camera *cam, MT_T
cam->NodeUpdateGS(0);
/* setup rasterizer transformations */
+ /* SetViewMatrix may use stereomode which we temporarily disable here */
+ RAS_IRasterizer::StereoMode stereomode = ras->GetStereoMode();
+ ras->SetStereoMode(RAS_IRasterizer::RAS_STEREO_NOSTEREO);
ras->SetProjectionMatrix(projectionmat);
ras->SetViewMatrix(modelviewmat, cam->NodeGetWorldOrientation(), cam->NodeGetWorldPosition(), cam->GetCameraData()->m_perspective);
+ ras->SetStereoMode(stereomode);
}
void KX_LightObject::UnbindShadowBuffer(RAS_IRasterizer *ras)