Merging trunk up to r39447.

This commit is contained in:
Joerg Mueller 2011-08-16 14:11:58 +00:00
commit 23807d1fb4
177 changed files with 1940 additions and 1549 deletions

@ -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
lite: all
headless: all
bpy: all
# package types
# -----------------------------------------------------------------------------
# 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

@ -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:

@ -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)

@ -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)

@ -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)

@ -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)

@ -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']

@ -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', ''),

@ -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

@ -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)) {

@ -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;
}

@ -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

@ -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

@ -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"

@ -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"

@ -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"

@ -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"

@ -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"

@ -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"

@ -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"

@ -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'}

@ -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"

@ -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):

@ -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"

@ -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"

@ -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"

@ -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"

@ -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"

@ -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'}

@ -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"

@ -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

@ -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

@ -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

@ -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

@ -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):

@ -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

@ -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

@ -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

@ -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

@ -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()

@ -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'}

@ -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

@ -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

@ -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"

@ -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

@ -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'}

@ -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'}

@ -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'}

@ -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'}

@ -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'}

@ -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'}

@ -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'}

@ -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..."

@ -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

@ -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

@ -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"

@ -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")

@ -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):

@ -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")

@ -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'}

@ -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"

@ -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.

@ -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'

@ -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"

@ -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()
col.prop(space, "use_filter_case_sensitive")
col.prop(space, "use_filter_complete")
layout.prop(space, "use_filter_case_sensitive")
layout.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()
layout.operator("outliner.keyingset_add_selected")
layout.operator("outliner.keyingset_remove_selected")
col.operator("outliner.keyingset_add_selected")
col.operator("outliner.keyingset_remove_selected")
layout.separator()
col.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__)

@ -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):

@ -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):

@ -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):

@ -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 = ""

@ -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"

@ -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"

@ -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"

@ -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;

@ -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;

@ -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);

@ -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;
}
}
}

@ -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();
}

@ -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");
}
}
}

@ -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);

@ -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)) {

@ -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);

@ -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

@ -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++) {

@ -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)

@ -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);

@ -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 */

@ -183,6 +183,12 @@
# define UNUSED(x) UNUSED_ ## x
#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

@ -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;

@ -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;

@ -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;

@ -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);

@ -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;

@ -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)
uiDefAutoButR(block, ptr, prop, -1, "", ICON_NONE, 0, 0, w, UI_UNIT_Y);
/* 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;
/* even if 'expand' is fale, expanding anyway */
if(!ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) || expand) {
/* layout for known array subtypes */
char str[3];
char str[3]= {'\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++) {
str[0]= RNA_property_array_item_char(prop, a);
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) 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) {

@ -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;

@ -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);

@ -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);
}
}

@ -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;

@ -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;

@ -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);

@ -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;

Some files were not shown because too many files have changed in this diff Show More