svn merge -r39286:39385 https://svn.blender.org/svnroot/bf-blender/trunk/blender
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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', ''),
|
||||
|
||||
@@ -158,19 +158,23 @@ GHOST_NDOFManagerCocoa::GHOST_NDOFManagerCocoa(GHOST_System& sys)
|
||||
}
|
||||
|
||||
GHOST_NDOFManagerCocoa::~GHOST_NDOFManagerCocoa()
|
||||
{
|
||||
if (available())
|
||||
{
|
||||
UnregisterConnexionClient(m_clientID);
|
||||
CleanupConnexionHandlers();
|
||||
ghost_system = NULL;
|
||||
ndof_manager = NULL;
|
||||
}
|
||||
|
||||
}
|
||||
extern "C" {
|
||||
bool GHOST_NDOFManagerCocoa::available()
|
||||
{
|
||||
// extern OSErr InstallConnexionHandlers() __attribute__((weak_import));
|
||||
// ^^ not needed since the entire framework is weak-linked
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
@@ -191,7 +192,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
|
||||
@@ -1116,7 +1117,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):
|
||||
@@ -71,7 +72,7 @@ class DATA_PT_skeleton(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
flow.prop(arm, "use_deform_preserve_volume", text="Quaternion")
|
||||
|
||||
|
||||
class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
class DATA_PT_display(ArmatureButtonsPanel, Panel):
|
||||
bl_label = "Display"
|
||||
|
||||
def draw(self, context):
|
||||
@@ -96,7 +97,7 @@ class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
col.prop(arm, "use_deform_delay", text="Delay Refresh")
|
||||
|
||||
|
||||
class DATA_PT_bone_groups(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
class DATA_PT_bone_groups(ArmatureButtonsPanel, Panel):
|
||||
bl_label = "Bone Groups"
|
||||
|
||||
@classmethod
|
||||
@@ -147,7 +148,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'}
|
||||
|
||||
@@ -186,7 +187,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):
|
||||
@@ -213,7 +214,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'}
|
||||
|
||||
@@ -266,7 +267,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"
|
||||
|
||||
@@ -289,7 +290,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"
|
||||
|
||||
@@ -303,7 +304,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):
|
||||
@@ -114,7 +115,7 @@ class DATA_PT_shape_curve(CurveButtonsPanel, bpy.types.Panel):
|
||||
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):
|
||||
@@ -580,13 +581,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'}
|
||||
|
||||
@@ -344,7 +345,7 @@ class RENDER_PT_game_performance(RenderButtonsPanel, bpy.types.Panel):
|
||||
row.prop(gs, "use_display_lists")
|
||||
|
||||
|
||||
class RENDER_PT_game_display(RenderButtonsPanel, bpy.types.Panel):
|
||||
class RENDER_PT_game_display(RenderButtonsPanel, Panel):
|
||||
bl_label = "Display"
|
||||
COMPAT_ENGINES = {'BLENDER_GAME'}
|
||||
|
||||
@@ -360,7 +361,7 @@ class RENDER_PT_game_display(RenderButtonsPanel, bpy.types.Panel):
|
||||
flow.prop(gs, "show_mouse", text="Mouse Cursor")
|
||||
|
||||
|
||||
class RENDER_PT_game_sound(RenderButtonsPanel, bpy.types.Panel):
|
||||
class RENDER_PT_game_sound(RenderButtonsPanel, Panel):
|
||||
bl_label = "Sound"
|
||||
COMPAT_ENGINES = {'BLENDER_GAME'}
|
||||
|
||||
@@ -381,7 +382,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'}
|
||||
@@ -405,7 +406,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'}
|
||||
|
||||
@@ -424,7 +425,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'}
|
||||
|
||||
@@ -450,7 +451,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():
|
||||
@@ -755,7 +756,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"
|
||||
|
||||
@@ -779,7 +780,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'}
|
||||
@@ -600,7 +601,7 @@ class RENDER_PT_encoding(RenderButtonsPanel, bpy.types.Panel):
|
||||
split.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_unit(SceneButtonsPanel, bpy.types.Panel):
|
||||
class SCENE_PT_unit(SceneButtonsPanel, Panel):
|
||||
bl_label = "Units"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER'}
|
||||
|
||||
@@ -61,7 +62,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):
|
||||
@@ -94,7 +95,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
|
||||
@@ -144,7 +145,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'}
|
||||
|
||||
@@ -161,7 +162,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'}
|
||||
|
||||
@@ -190,7 +191,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
|
||||
@@ -198,7 +199,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
|
||||
|
||||
|
||||
#######################################
|
||||
@@ -84,7 +85,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):
|
||||
@@ -96,21 +97,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")
|
||||
@@ -134,7 +133,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):
|
||||
@@ -142,8 +141,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")
|
||||
@@ -170,13 +167,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
|
||||
@@ -206,7 +202,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):
|
||||
@@ -216,7 +212,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")
|
||||
@@ -237,7 +232,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):
|
||||
@@ -245,7 +240,6 @@ class DOPESHEET_MT_channel(bpy.types.Menu):
|
||||
|
||||
layout.operator_context = 'INVOKE_REGION_CHANNELS'
|
||||
|
||||
layout.column()
|
||||
layout.operator("anim.channels_delete")
|
||||
|
||||
layout.separator()
|
||||
@@ -268,13 +262,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")
|
||||
@@ -301,13 +294,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'
|
||||
@@ -317,7 +309,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):
|
||||
@@ -325,7 +317,6 @@ class DOPESHEET_MT_gpencil_channel(bpy.types.Menu):
|
||||
|
||||
layout.operator_context = 'INVOKE_REGION_CHANNELS'
|
||||
|
||||
layout.column()
|
||||
layout.operator("anim.channels_delete")
|
||||
|
||||
layout.separator()
|
||||
@@ -345,13 +336,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"
|
||||
@@ -452,14 +453,12 @@ class IMAGE_PT_game_properties(bpy.types.Panel):
|
||||
|
||||
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.label("Cursor Location:")
|
||||
col.row().prop(uvedit, "cursor_location", text="")
|
||||
|
||||
col.separator()
|
||||
|
||||
col = layout.column()
|
||||
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"
|
||||
|
||||
@@ -160,8 +161,10 @@ class INFO_MT_file_import(bpy.types.Menu):
|
||||
if hasattr(bpy.types, "WM_OT_collada_import"):
|
||||
self.layout.operator("wm.collada_import", text="COLLADA (.dae)")
|
||||
|
||||
self.layout.operator("export_mesh.wavefront", text="Wavefront (.obj), BMesh")
|
||||
|
||||
class INFO_MT_file_export(bpy.types.Menu):
|
||||
|
||||
class INFO_MT_file_export(Menu):
|
||||
bl_idname = "INFO_MT_file_export"
|
||||
bl_label = "Export"
|
||||
|
||||
@@ -169,10 +172,8 @@ class INFO_MT_file_export(bpy.types.Menu):
|
||||
if hasattr(bpy.types, "WM_OT_collada_export"):
|
||||
self.layout.operator("wm.collada_export", text="COLLADA (.dae)")
|
||||
|
||||
self.layout.operator("export_mesh.wavefront", text="Wavefront (.obj), BMesh")
|
||||
|
||||
|
||||
class INFO_MT_file_external_data(bpy.types.Menu):
|
||||
class INFO_MT_file_external_data(Menu):
|
||||
bl_label = "External Data"
|
||||
|
||||
def draw(self, context):
|
||||
@@ -189,12 +190,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")
|
||||
@@ -209,12 +211,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")
|
||||
@@ -223,7 +226,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"
|
||||
|
||||
@@ -239,12 +242,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")
|
||||
@@ -254,17 +258,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):
|
||||
@@ -304,7 +309,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):
|
||||
@@ -325,7 +330,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):
|
||||
@@ -345,7 +350,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):
|
||||
@@ -381,7 +386,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()
|
||||
@@ -78,13 +75,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
|
||||
@@ -98,7 +94,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):
|
||||
@@ -106,7 +102,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")
|
||||
@@ -117,7 +112,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):
|
||||
@@ -125,7 +120,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")
|
||||
@@ -160,13 +154,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")
|
||||
|
||||
@@ -179,13 +172,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()
|
||||
@@ -129,13 +127,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()
|
||||
@@ -148,7 +145,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):
|
||||
@@ -156,7 +153,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")
|
||||
@@ -169,14 +165,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...")
|
||||
@@ -190,14 +198,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'
|
||||
@@ -216,7 +223,7 @@ class SEQUENCER_MT_add_effect(bpy.types.Menu):
|
||||
layout.operator("sequencer.effect_strip_add", text="Adjustment Layer").type = 'ADJUSTMENT'
|
||||
|
||||
|
||||
class SEQUENCER_MT_strip(bpy.types.Menu):
|
||||
class SEQUENCER_MT_strip(Menu):
|
||||
bl_label = "Strip"
|
||||
|
||||
def draw(self, context):
|
||||
@@ -224,7 +231,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
|
||||
@@ -233,6 +239,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()
|
||||
|
||||
@@ -292,6 +299,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
|
||||
layout.separator()
|
||||
|
||||
layout.operator("sequencer.swap_data")
|
||||
layout.menu("SEQUENCER_MT_change")
|
||||
|
||||
|
||||
class SequencerButtonsPanel():
|
||||
@@ -320,7 +328,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):
|
||||
@@ -374,9 +382,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
|
||||
@@ -514,7 +524,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
|
||||
@@ -558,6 +568,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()
|
||||
@@ -595,7 +608,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
|
||||
@@ -636,7 +649,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
|
||||
@@ -670,7 +683,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
|
||||
@@ -732,7 +745,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
|
||||
@@ -766,7 +779,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'
|
||||
@@ -791,7 +804,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'
|
||||
@@ -755,7 +756,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"
|
||||
|
||||
@@ -780,7 +781,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"
|
||||
|
||||
@@ -870,7 +871,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
|
||||
@@ -881,7 +882,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'
|
||||
@@ -1071,7 +1072,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"
|
||||
@@ -1100,7 +1101,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"
|
||||
@@ -1112,7 +1113,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..."
|
||||
@@ -1258,7 +1259,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"
|
||||
@@ -1306,7 +1307,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
|
||||
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?
|
||||
@@ -180,7 +181,7 @@ class VIEW3D_MT_transform(bpy.types.Menu):
|
||||
layout.operator("object.align")
|
||||
|
||||
|
||||
class VIEW3D_MT_mirror(bpy.types.Menu):
|
||||
class VIEW3D_MT_mirror(Menu):
|
||||
bl_label = "Mirror"
|
||||
|
||||
def draw(self, context):
|
||||
@@ -218,7 +219,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):
|
||||
@@ -235,7 +236,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):
|
||||
@@ -268,7 +269,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):
|
||||
@@ -326,7 +327,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):
|
||||
@@ -349,7 +350,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):
|
||||
@@ -365,7 +366,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):
|
||||
@@ -391,7 +392,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):
|
||||
@@ -403,7 +404,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):
|
||||
@@ -429,7 +430,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):
|
||||
@@ -466,7 +467,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):
|
||||
@@ -491,7 +492,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):
|
||||
@@ -542,7 +543,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):
|
||||
@@ -571,7 +572,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):
|
||||
@@ -597,7 +598,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):
|
||||
@@ -615,7 +616,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):
|
||||
@@ -628,7 +629,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):
|
||||
@@ -659,7 +660,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):
|
||||
@@ -672,7 +673,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"
|
||||
|
||||
@@ -730,7 +731,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):
|
||||
@@ -741,7 +742,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):
|
||||
@@ -753,7 +754,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
|
||||
@@ -848,7 +849,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):
|
||||
@@ -867,7 +868,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):
|
||||
@@ -877,7 +878,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):
|
||||
@@ -887,7 +888,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):
|
||||
@@ -902,7 +903,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):
|
||||
@@ -913,7 +914,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):
|
||||
@@ -924,7 +925,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):
|
||||
@@ -946,7 +947,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):
|
||||
@@ -963,7 +964,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):
|
||||
@@ -985,7 +986,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):
|
||||
@@ -1000,7 +1001,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):
|
||||
@@ -1019,7 +1020,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):
|
||||
@@ -1044,7 +1045,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):
|
||||
@@ -1074,7 +1075,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):
|
||||
@@ -1124,7 +1125,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):
|
||||
@@ -1156,7 +1157,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):
|
||||
@@ -1174,13 +1175,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):
|
||||
@@ -1249,7 +1250,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):
|
||||
@@ -1264,7 +1265,7 @@ class VIEW3D_MT_pose_transform(bpy.types.Menu):
|
||||
layout.label(text="Origin")
|
||||
|
||||
|
||||
class VIEW3D_MT_pose_slide(bpy.types.Menu):
|
||||
class VIEW3D_MT_pose_slide(Menu):
|
||||
bl_label = "In-Betweens"
|
||||
|
||||
def draw(self, context):
|
||||
@@ -1275,7 +1276,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):
|
||||
@@ -1293,7 +1294,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):
|
||||
@@ -1308,7 +1309,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):
|
||||
@@ -1318,7 +1319,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):
|
||||
@@ -1332,7 +1333,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):
|
||||
@@ -1342,7 +1343,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):
|
||||
@@ -1353,11 +1354,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):
|
||||
@@ -1396,24 +1397,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):
|
||||
@@ -1460,7 +1461,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):
|
||||
@@ -1484,7 +1485,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):
|
||||
@@ -1505,7 +1506,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 = { \
|
||||
@@ -1539,7 +1540,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"
|
||||
@@ -1568,7 +1569,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"
|
||||
@@ -1594,7 +1595,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):
|
||||
@@ -1626,7 +1627,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):
|
||||
@@ -1670,7 +1671,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"
|
||||
|
||||
@@ -1718,7 +1719,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):
|
||||
@@ -1732,7 +1733,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
|
||||
@@ -1772,13 +1773,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):
|
||||
@@ -1800,7 +1801,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):
|
||||
@@ -1810,7 +1811,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):
|
||||
@@ -1824,17 +1825,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):
|
||||
@@ -1854,7 +1855,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):
|
||||
@@ -1888,7 +1889,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):
|
||||
@@ -1921,7 +1922,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):
|
||||
@@ -1932,7 +1933,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):
|
||||
@@ -1954,7 +1955,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):
|
||||
@@ -2009,7 +2010,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):
|
||||
@@ -2029,7 +2030,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):
|
||||
@@ -2039,7 +2040,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):
|
||||
@@ -2054,7 +2055,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"
|
||||
@@ -2095,7 +2096,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"
|
||||
@@ -2120,7 +2121,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"
|
||||
@@ -2192,7 +2193,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"
|
||||
@@ -2229,7 +2230,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"
|
||||
@@ -2251,7 +2252,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"
|
||||
@@ -2304,7 +2305,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"
|
||||
@@ -2332,7 +2333,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"
|
||||
@@ -2377,7 +2378,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"
|
||||
|
||||
@@ -607,7 +607,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 {
|
||||
@@ -622,7 +622,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;
|
||||
|
||||
@@ -102,6 +102,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 */
|
||||
@@ -285,6 +286,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);
|
||||
@@ -316,6 +327,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);
|
||||
|
||||
@@ -2165,6 +2165,7 @@ void DM_vertex_attributes_from_gpu(DerivedMesh *dm, GPUVertexAttribs *gattribs,
|
||||
attribs->tface[a].array = NULL;
|
||||
attribs->tface[a].emOffset = pdata->layers[layer].offset;
|
||||
attribs->tface[a].glIndex = gattribs->layer[b].glindex;
|
||||
attribs->tface[a].glTexco = gattribs->layer[b].gltexco;
|
||||
|
||||
}
|
||||
}*/
|
||||
@@ -2207,6 +2208,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1026,6 +1026,52 @@ 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;
|
||||
@@ -1116,35 +1162,13 @@ 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); \
|
||||
}
|
||||
|
||||
PASSVERT(mface->v1, 0);
|
||||
PASSVERT(mface->v2, 1);
|
||||
PASSVERT(mface->v3, 2);
|
||||
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);
|
||||
if(mface->v4)
|
||||
PASSVERT(mface->v4, 3)
|
||||
cddm_draw_attrib_vertex(&attribs, mvert, a, mface->v4, 3, smoothnormal);
|
||||
else
|
||||
PASSVERT(mface->v3, 2)
|
||||
cddm_draw_attrib_vertex(&attribs, mvert, a, mface->v3, 2, smoothnormal);
|
||||
|
||||
}
|
||||
glEnd();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -136,7 +136,7 @@ static struct bUnitDef buImperialLenDef[] = {
|
||||
{"yard", "yards", "yd", NULL, "Yards", UN_SC_YD, 0.0, B_UNIT_DEF_NONE},
|
||||
{"foot", "feet", "'", "ft", "Feet", UN_SC_FT, 0.0, B_UNIT_DEF_NONE}, /* base unit */
|
||||
{"inch", "inches", "\"", "in", "Inches", UN_SC_IN, 0.0, B_UNIT_DEF_NONE},
|
||||
{"thou", "thous", "mil", NULL, "Thous", UN_SC_MIL, 0.0, B_UNIT_DEF_NONE},
|
||||
{"thou", "thou", "thou", "mil", "Thou", UN_SC_MIL, 0.0, B_UNIT_DEF_NONE}, /* plural for thou has no 's' */
|
||||
{NULL, NULL, NULL, NULL, NULL, 0.0, 0.0}
|
||||
};
|
||||
static struct bUnitCollection buImperialLenCollecton = {buImperialLenDef, 4, 0, sizeof(buImperialLenDef)/sizeof(bUnitDef)};
|
||||
|
||||
@@ -72,14 +72,14 @@ 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);
|
||||
|
||||
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);
|
||||
|
||||
/* *** */
|
||||
@@ -151,125 +151,8 @@ 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;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif /* BLI_GHASH_H */
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
e= n;
|
||||
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;
|
||||
|
||||
|
||||
@@ -1614,7 +1614,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);
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
|
||||
#include "BLI_string.h"
|
||||
#include "BLI_utildefines.h"
|
||||
#include "BLI_ghash.h"
|
||||
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_colortools.h"
|
||||
@@ -2322,9 +2323,10 @@ static void operator_call_cb(bContext *C, void *UNUSED(arg1), void *arg2)
|
||||
|
||||
static void operator_search_cb(const bContext *C, void *UNUSED(arg), const char *str, uiSearchItems *items)
|
||||
{
|
||||
wmOperatorType *ot = WM_operatortype_first();
|
||||
GHashIterator *iter= WM_operatortype_iter();
|
||||
|
||||
for(; ot; ot= ot->next) {
|
||||
for( ; !BLI_ghashIterator_isDone(iter); BLI_ghashIterator_step(iter)) {
|
||||
wmOperatorType *ot= BLI_ghashIterator_getValue(iter);
|
||||
|
||||
if(BLI_strcasestr(ot->name, str)) {
|
||||
if(WM_operator_poll((bContext*)C, ot)) {
|
||||
@@ -2345,6 +2347,7 @@ static void operator_search_cb(const bContext *C, void *UNUSED(arg), const char
|
||||
}
|
||||
}
|
||||
}
|
||||
BLI_ghashIterator_free(iter);
|
||||
}
|
||||
|
||||
void uiTemplateOperatorSearch(uiLayout *layout)
|
||||
|
||||
@@ -182,7 +182,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);
|
||||
|
||||
@@ -247,7 +247,7 @@ static int object_clear_transform_generic_exec(bContext *C, wmOperator *op,
|
||||
}
|
||||
|
||||
/* tag for updates */
|
||||
ob->recalc |= OB_RECALC_OB;
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_OB);
|
||||
}
|
||||
}
|
||||
CTX_DATA_END;
|
||||
@@ -342,7 +342,8 @@ static int object_origin_clear_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
negate_v3_v3(v3, v1);
|
||||
mul_m3_v3(mat, v3);
|
||||
}
|
||||
ob->recalc |= OB_RECALC_OB;
|
||||
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_OB);
|
||||
}
|
||||
CTX_DATA_END;
|
||||
|
||||
@@ -872,7 +873,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
|
||||
(ob->dup_group==ob_other->dup_group && (ob->transflag|ob_other->transflag) & OB_DUPLIGROUP) )
|
||||
) {
|
||||
ob_other->flag |= OB_DONE;
|
||||
ob_other->recalc= OB_RECALC_OB|OB_RECALC_DATA;
|
||||
DAG_id_tag_update(&ob_other->id, OB_RECALC_OB|OB_RECALC_DATA);
|
||||
|
||||
copy_v3_v3(centn, cent);
|
||||
mul_mat3_m4_v3(ob_other->obmat, centn); /* ommit translation part */
|
||||
@@ -891,11 +892,9 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
CTX_DATA_END;
|
||||
|
||||
for (tob= bmain->object.first; tob; tob= tob->id.next) {
|
||||
if(tob->data && (((ID *)tob->data)->flag & LIB_DOIT)) {
|
||||
tob->recalc= OB_RECALC_OB|OB_RECALC_DATA;
|
||||
}
|
||||
}
|
||||
for (tob= bmain->object.first; tob; tob= tob->id.next)
|
||||
if(tob->data && (((ID *)tob->data)->flag & LIB_DOIT))
|
||||
DAG_id_tag_update(&tob->id, OB_RECALC_OB|OB_RECALC_DATA);
|
||||
|
||||
if (tot_change) {
|
||||
DAG_ids_flush_update(bmain, 0);
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/editors/render/render_shading.c
|
||||
/** \file blender/editors/render/render_update.c
|
||||
* \ingroup edrend
|
||||
*/
|
||||
|
||||
|
||||
@@ -675,7 +675,12 @@ static int scrollback_append_exec(bContext *C, wmOperator *op)
|
||||
|
||||
console_scrollback_limit(sc);
|
||||
|
||||
/* 'ar' can be null depending on the operator that runs
|
||||
* rendering with invoke default for eg causes this */
|
||||
if(ar) {
|
||||
console_textview_update_rect(sc, ar);
|
||||
}
|
||||
|
||||
ED_area_tag_redraw(CTX_wm_area(C));
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
||||
@@ -479,72 +479,88 @@ static void snode_tag_changed(SpaceNode *snode, bNode *node)
|
||||
NodeTagIDChanged(snode->nodetree, gnode->id);
|
||||
}
|
||||
|
||||
void node_set_active(SpaceNode *snode, bNode *node)
|
||||
static int has_nodetree(bNodeTree *ntree, bNodeTree *lookup)
|
||||
{
|
||||
nodeSetActive(snode->edittree, node);
|
||||
bNode *node;
|
||||
|
||||
if(ntree == lookup)
|
||||
return 1;
|
||||
|
||||
for(node=ntree->nodes.first; node; node=node->next)
|
||||
if(node->type == NODE_GROUP && node->id)
|
||||
if(has_nodetree((bNodeTree*)node->id, lookup))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ED_node_set_active(Main *bmain, bNodeTree *ntree, bNode *node)
|
||||
{
|
||||
nodeSetActive(ntree, node);
|
||||
|
||||
if(node->type!=NODE_GROUP) {
|
||||
int was_output= (node->flag & NODE_DO_OUTPUT);
|
||||
|
||||
/* tree specific activate calls */
|
||||
if(snode->treetype==NTREE_SHADER) {
|
||||
if(ntree->type==NTREE_SHADER) {
|
||||
/* when we select a material, active texture is cleared, for buttons */
|
||||
if(node->id && GS(node->id->name)==ID_MA)
|
||||
nodeClearActiveID(snode->edittree, ID_TE);
|
||||
nodeClearActiveID(ntree, ID_TE);
|
||||
|
||||
if(node->type==SH_NODE_OUTPUT) {
|
||||
bNode *tnode;
|
||||
|
||||
for(tnode= snode->edittree->nodes.first; tnode; tnode= tnode->next)
|
||||
for(tnode= ntree->nodes.first; tnode; tnode= tnode->next)
|
||||
if( tnode->type==SH_NODE_OUTPUT)
|
||||
tnode->flag &= ~NODE_DO_OUTPUT;
|
||||
|
||||
node->flag |= NODE_DO_OUTPUT;
|
||||
if(was_output==0)
|
||||
ED_node_changed_update(snode->id, node);
|
||||
ED_node_generic_update(bmain, ntree, node);
|
||||
}
|
||||
|
||||
WM_main_add_notifier(NC_MATERIAL|ND_NODES, node->id);
|
||||
}
|
||||
else if(snode->treetype==NTREE_COMPOSIT) {
|
||||
Scene *scene= (Scene*)snode->id;
|
||||
|
||||
else if(ntree->type==NTREE_COMPOSIT) {
|
||||
/* make active viewer, currently only 1 supported... */
|
||||
if( ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) {
|
||||
bNode *tnode;
|
||||
|
||||
|
||||
for(tnode= snode->edittree->nodes.first; tnode; tnode= tnode->next)
|
||||
for(tnode= ntree->nodes.first; tnode; tnode= tnode->next)
|
||||
if( ELEM(tnode->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER))
|
||||
tnode->flag &= ~NODE_DO_OUTPUT;
|
||||
|
||||
node->flag |= NODE_DO_OUTPUT;
|
||||
if(was_output==0) {
|
||||
snode_tag_changed(snode, node);
|
||||
|
||||
ED_node_changed_update(snode->id, node);
|
||||
}
|
||||
if(was_output==0)
|
||||
ED_node_generic_update(bmain, ntree, node);
|
||||
|
||||
/* addnode() doesnt link this yet... */
|
||||
node->id= (ID *)BKE_image_verify_viewer(IMA_TYPE_COMPOSITE, "Viewer Node");
|
||||
}
|
||||
else if(node->type==CMP_NODE_R_LAYERS) {
|
||||
Scene *scene;
|
||||
|
||||
for(scene=bmain->scene.first; scene; scene=scene->id.next) {
|
||||
if(scene->nodetree && scene->use_nodes && has_nodetree(scene->nodetree, ntree)) {
|
||||
if(node->id==NULL || node->id==(ID *)scene) {
|
||||
scene->r.actlay= node->custom1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(node->type==CMP_NODE_COMPOSITE) {
|
||||
bNode *tnode;
|
||||
|
||||
for(tnode= snode->edittree->nodes.first; tnode; tnode= tnode->next)
|
||||
for(tnode= ntree->nodes.first; tnode; tnode= tnode->next)
|
||||
if( tnode->type==CMP_NODE_COMPOSITE)
|
||||
tnode->flag &= ~NODE_DO_OUTPUT;
|
||||
|
||||
node->flag |= NODE_DO_OUTPUT;
|
||||
ED_node_changed_update(snode->id, node);
|
||||
ED_node_generic_update(bmain, ntree, node);
|
||||
}
|
||||
}
|
||||
else if(snode->treetype==NTREE_TEXTURE) {
|
||||
else if(ntree->type==NTREE_TEXTURE) {
|
||||
// XXX
|
||||
#if 0
|
||||
if(node->id)
|
||||
@@ -1940,7 +1956,7 @@ void snode_autoconnect(SpaceNode *snode, int allow_multiple, int replace)
|
||||
}
|
||||
|
||||
/* can be called from menus too, but they should do own undopush and redraws */
|
||||
bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float locy)
|
||||
bNode *node_add_node(SpaceNode *snode, Main *bmain, Scene *scene, int type, float locx, float locy)
|
||||
{
|
||||
bNode *node= NULL, *gnode;
|
||||
|
||||
@@ -1955,7 +1971,7 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float
|
||||
return NULL;
|
||||
}
|
||||
else {
|
||||
bNodeTree *ngroup= BLI_findlink(&G.main->nodetree, type-NODE_GROUP_MENU);
|
||||
bNodeTree *ngroup= BLI_findlink(&bmain->nodetree, type-NODE_GROUP_MENU);
|
||||
if(ngroup)
|
||||
node= nodeAddNodeType(snode->edittree, NODE_GROUP, ngroup, NULL);
|
||||
}
|
||||
@@ -1976,7 +1992,7 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float
|
||||
}
|
||||
|
||||
node_tree_verify_groups(snode->nodetree);
|
||||
node_set_active(snode, node);
|
||||
ED_node_set_active(bmain, snode->edittree, node);
|
||||
|
||||
if(snode->nodetree->type==NTREE_COMPOSIT) {
|
||||
if(ELEM4(node->type, CMP_NODE_R_LAYERS, CMP_NODE_COMPOSITE, CMP_NODE_DEFOCUS, CMP_NODE_OUTPUT_FILE))
|
||||
@@ -3205,6 +3221,7 @@ void NODE_OT_show_cyclic_dependencies(wmOperatorType *ot)
|
||||
|
||||
static int node_add_file_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Main *bmain= CTX_data_main(C);
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SpaceNode *snode= CTX_wm_space_node(C);
|
||||
bNode *node;
|
||||
@@ -3245,7 +3262,7 @@ static int node_add_file_exec(bContext *C, wmOperator *op)
|
||||
|
||||
ED_preview_kill_jobs(C);
|
||||
|
||||
node = node_add_node(snode, scene, ntype, snode->mx, snode->my);
|
||||
node = node_add_node(snode, bmain, scene, ntype, snode->mx, snode->my);
|
||||
|
||||
if (!node) {
|
||||
BKE_report(op->reports, RPT_WARNING, "Could not add an image node.");
|
||||
|
||||
@@ -64,6 +64,8 @@
|
||||
|
||||
static void do_node_add(bContext *C, void *UNUSED(arg), int event)
|
||||
{
|
||||
Main *bmain= CTX_data_main(C);
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SpaceNode *snode= CTX_wm_space_node(C);
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
ARegion *ar;
|
||||
@@ -87,7 +89,7 @@ static void do_node_add(bContext *C, void *UNUSED(arg), int event)
|
||||
else node->flag &= ~NODE_TEST;
|
||||
}
|
||||
|
||||
node= node_add_node(snode, CTX_data_scene(C), event, snode->mx, snode->my);
|
||||
node= node_add_node(snode, bmain, scene, event, snode->mx, snode->my);
|
||||
|
||||
/* select previous selection before autoconnect */
|
||||
for(node= snode->edittree->nodes.first; node; node= node->next) {
|
||||
|
||||
@@ -43,6 +43,7 @@ struct wmWindowManager;
|
||||
struct bNode;
|
||||
struct bNodeSocket;
|
||||
struct bNodeLink;
|
||||
struct Main;
|
||||
|
||||
/* temp data to pass on to modal */
|
||||
typedef struct bNodeLinkDrag
|
||||
@@ -97,10 +98,9 @@ void node_tree_from_ID(ID *id, bNodeTree **ntree, bNodeTree **edittree, int *tre
|
||||
void snode_notify(bContext *C, SpaceNode *snode);
|
||||
void snode_dag_update(bContext *C, SpaceNode *snode);
|
||||
bNode *next_node(bNodeTree *ntree);
|
||||
bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float locy);
|
||||
bNode *node_add_node(SpaceNode *snode, struct Main *bmain, Scene *scene, int type, float locx, float locy);
|
||||
void snode_set_context(SpaceNode *snode, Scene *scene);
|
||||
void snode_make_group_editable(SpaceNode *snode, bNode *gnode);
|
||||
void node_set_active(SpaceNode *snode, bNode *node);
|
||||
void node_deselectall(SpaceNode *snode);
|
||||
int node_select_same_type(SpaceNode *snode);
|
||||
int node_select_same_type_np(SpaceNode *snode, int dir);
|
||||
|
||||
@@ -37,10 +37,12 @@
|
||||
#include "DNA_scene_types.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_main.h"
|
||||
|
||||
#include "BLI_rect.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "ED_node.h"
|
||||
#include "ED_screen.h"
|
||||
#include "ED_types.h"
|
||||
|
||||
@@ -70,7 +72,7 @@ static bNode *node_under_mouse(bNodeTree *ntree, int mx, int my)
|
||||
|
||||
/* ****** Click Select ****** */
|
||||
|
||||
static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, const int mval[2], short extend)
|
||||
static bNode *node_mouse_select(Main *bmain, SpaceNode *snode, ARegion *ar, const int mval[2], short extend)
|
||||
{
|
||||
bNode *node;
|
||||
float mx, my;
|
||||
@@ -92,7 +94,7 @@ static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, const int mval[2]
|
||||
else
|
||||
node->flag ^= SELECT;
|
||||
|
||||
node_set_active(snode, node);
|
||||
ED_node_set_active(bmain, snode->edittree, node);
|
||||
}
|
||||
|
||||
return node;
|
||||
@@ -100,6 +102,7 @@ static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, const int mval[2]
|
||||
|
||||
static int node_select_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Main *bmain= CTX_data_main(C);
|
||||
SpaceNode *snode= CTX_wm_space_node(C);
|
||||
ARegion *ar= CTX_wm_region(C);
|
||||
int mval[2];
|
||||
@@ -113,7 +116,7 @@ static int node_select_exec(bContext *C, wmOperator *op)
|
||||
extend = RNA_boolean_get(op->ptr, "extend");
|
||||
|
||||
/* perform the select */
|
||||
node= node_mouse_select(snode, ar, mval, extend);
|
||||
node= node_mouse_select(bmain, snode, ar, mval, extend);
|
||||
|
||||
/* send notifiers */
|
||||
WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL);
|
||||
|
||||
@@ -37,8 +37,12 @@ set(INC_SYS
|
||||
)
|
||||
|
||||
set(SRC
|
||||
outliner.c
|
||||
outliner_draw.c
|
||||
outliner_edit.c
|
||||
outliner_ops.c
|
||||
outliner_select.c
|
||||
outliner_tools.c
|
||||
outliner_tree.c
|
||||
space_outliner.c
|
||||
|
||||
outliner_intern.h
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
1671
source/blender/editors/space_outliner/outliner_draw.c
Normal file
1671
source/blender/editors/space_outliner/outliner_draw.c
Normal file
File diff suppressed because it is too large
Load Diff
1398
source/blender/editors/space_outliner/outliner_edit.c
Normal file
1398
source/blender/editors/space_outliner/outliner_edit.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -44,6 +44,8 @@ struct TreeStoreElem;
|
||||
struct bContext;
|
||||
struct Scene;
|
||||
struct ARegion;
|
||||
struct ID;
|
||||
struct Object;
|
||||
|
||||
typedef struct TreeElement {
|
||||
struct TreeElement *next, *prev, *parent;
|
||||
@@ -107,27 +109,65 @@ typedef struct TreeElement {
|
||||
/* button events */
|
||||
#define OL_NAMEBUTTON 1
|
||||
|
||||
/* get TreeStoreElem associated with a TreeElement
|
||||
* < a: (TreeElement) tree element to find stored element for
|
||||
*/
|
||||
#define TREESTORE(a) ((a)?soops->treestore->data+(a)->store_index:NULL)
|
||||
|
||||
/* outliner_ops.c */
|
||||
void outliner_operatortypes(void);
|
||||
void outliner_keymap(struct wmKeyConfig *keyconf);
|
||||
/* size constants */
|
||||
#define OL_Y_OFFSET 2
|
||||
|
||||
/* outliner_header.c */
|
||||
void outliner_header_buttons(const struct bContext *C, struct ARegion *ar);
|
||||
#define OL_TOG_RESTRICT_VIEWX (UI_UNIT_X*3)
|
||||
#define OL_TOG_RESTRICT_SELECTX (UI_UNIT_X*2)
|
||||
#define OL_TOG_RESTRICT_RENDERX UI_UNIT_X
|
||||
|
||||
#define OL_TOGW OL_TOG_RESTRICT_VIEWX
|
||||
|
||||
#define OL_RNA_COLX (UI_UNIT_X*15)
|
||||
#define OL_RNA_COL_SIZEX (UI_UNIT_X*7.5)
|
||||
#define OL_RNA_COL_SPACEX (UI_UNIT_X*2.5)
|
||||
|
||||
|
||||
/* outliner_tree.c ----------------------------------------------- */
|
||||
|
||||
void outliner_free_tree(ListBase *lb);
|
||||
|
||||
TreeElement *outliner_find_tse(struct SpaceOops *soops, TreeStoreElem *tse);
|
||||
TreeElement *outliner_find_id(struct SpaceOops *soops, ListBase *lb, struct ID *id);
|
||||
struct ID *outliner_search_back(SpaceOops *soops, TreeElement *te, short idcode);
|
||||
|
||||
void outliner_build_tree(struct Main *mainvar, struct Scene *scene, struct SpaceOops *soops);
|
||||
|
||||
/* outliner_draw.c ---------------------------------------------- */
|
||||
|
||||
/* outliner.c */
|
||||
void outliner_free_tree(struct ListBase *lb);
|
||||
void outliner_select(struct SpaceOops *soops, struct ListBase *lb, int *index, short *selecting);
|
||||
void draw_outliner(const struct bContext *C);
|
||||
|
||||
/* outliner_select.c -------------------------------------------- */
|
||||
|
||||
void outliner_select(struct SpaceOops *soops, ListBase *lb, int *index, short *selecting);
|
||||
|
||||
int tree_element_type_active(struct bContext *C, struct Scene *scene, struct SpaceOops *soops, TreeElement *te, TreeStoreElem *tselem, int set);
|
||||
int tree_element_active(struct bContext *C, struct Scene *scene, SpaceOops *soops, TreeElement *te, int set);
|
||||
|
||||
/* outliner_edit.c ---------------------------------------------- */
|
||||
|
||||
void outliner_do_object_operation(struct bContext *C, struct Scene *scene, struct SpaceOops *soops, struct ListBase *lb,
|
||||
void (*operation_cb)(struct bContext *C, struct Scene *scene, struct TreeElement *, struct TreeStoreElem *, TreeStoreElem *));
|
||||
|
||||
int common_restrict_check(struct bContext *C, struct Object *ob);
|
||||
|
||||
int outliner_has_one_flag(struct SpaceOops *soops, ListBase *lb, short flag, short curlevel);
|
||||
void outliner_set_flag(struct SpaceOops *soops, ListBase *lb, short flag, short set);
|
||||
|
||||
void object_toggle_visibility_cb(struct bContext *C, struct Scene *scene, TreeElement *te, struct TreeStoreElem *tsep, struct TreeStoreElem *tselem);
|
||||
void object_toggle_selectability_cb(struct bContext *C, struct Scene *scene, TreeElement *te, struct TreeStoreElem *tsep, struct TreeStoreElem *tselem);
|
||||
void object_toggle_renderability_cb(struct bContext *C, struct Scene *scene, TreeElement *te, struct TreeStoreElem *tsep, struct TreeStoreElem *tselem);
|
||||
|
||||
/* ...................................................... */
|
||||
|
||||
void OUTLINER_OT_item_activate(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_item_openclose(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_item_rename(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_operation(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_object_operation(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_group_operation(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_id_operation(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_data_operation(struct wmOperatorType *ot);
|
||||
|
||||
void OUTLINER_OT_show_one_level(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_show_active(struct wmOperatorType *ot);
|
||||
@@ -148,5 +188,23 @@ void OUTLINER_OT_keyingset_remove_selected(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_drivers_add_selected(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_drivers_delete_selected(struct wmOperatorType *ot);
|
||||
|
||||
#endif /* ED_OUTLINER_INTERN_H */
|
||||
/* outliner_tools.c ---------------------------------------------- */
|
||||
|
||||
void OUTLINER_OT_operation(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_object_operation(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_group_operation(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_id_operation(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_data_operation(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_animdata_operation(struct wmOperatorType *ot);
|
||||
void OUTLINER_OT_action_set(struct wmOperatorType *ot);
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
||||
/* outliner_ops.c */
|
||||
void outliner_operatortypes(void);
|
||||
void outliner_keymap(struct wmKeyConfig *keyconf);
|
||||
|
||||
/* outliner_header.c */
|
||||
void outliner_header_buttons(const struct bContext *C, struct ARegion *ar);
|
||||
|
||||
#endif /* ED_OUTLINER_INTERN_H */
|
||||
|
||||
@@ -57,6 +57,13 @@ void outliner_operatortypes(void)
|
||||
WM_operatortype_append(OUTLINER_OT_group_operation);
|
||||
WM_operatortype_append(OUTLINER_OT_id_operation);
|
||||
WM_operatortype_append(OUTLINER_OT_data_operation);
|
||||
WM_operatortype_append(OUTLINER_OT_animdata_operation);
|
||||
|
||||
#if 0 // GSOC_PEPPER
|
||||
|
||||
WM_operatortype_append(OUTLINER_OT_action_set);
|
||||
|
||||
#endif // GSOC_PEPPER
|
||||
|
||||
WM_operatortype_append(OUTLINER_OT_show_one_level);
|
||||
WM_operatortype_append(OUTLINER_OT_show_active);
|
||||
|
||||
867
source/blender/editors/space_outliner/outliner_select.c
Normal file
867
source/blender/editors/space_outliner/outliner_select.c
Normal file
@@ -0,0 +1,867 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2004 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): Joshua Leung
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/editors/space_outliner/outliner_select.c
|
||||
* \ingroup spoutliner
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "DNA_anim_types.h"
|
||||
#include "DNA_armature_types.h"
|
||||
#include "DNA_constraint_types.h"
|
||||
#include "DNA_camera_types.h"
|
||||
#include "DNA_group_types.h"
|
||||
#include "DNA_key_types.h"
|
||||
#include "DNA_lamp_types.h"
|
||||
#include "DNA_material_types.h"
|
||||
#include "DNA_mesh_types.h"
|
||||
#include "DNA_meta_types.h"
|
||||
#include "DNA_particle_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_world_types.h"
|
||||
#include "DNA_sequence_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BLI_utildefines.h"
|
||||
#include "BLI_math_base.h"
|
||||
|
||||
#if defined WIN32 && !defined _LIBC
|
||||
# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */
|
||||
#else
|
||||
# ifndef _GNU_SOURCE
|
||||
# define _GNU_SOURCE
|
||||
# endif
|
||||
# include <fnmatch.h>
|
||||
#endif
|
||||
|
||||
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_deform.h"
|
||||
#include "BKE_depsgraph.h"
|
||||
#include "BKE_fcurve.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_group.h"
|
||||
#include "BKE_library.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_modifier.h"
|
||||
#include "BKE_report.h"
|
||||
#include "BKE_scene.h"
|
||||
#include "BKE_sequencer.h"
|
||||
|
||||
#include "ED_armature.h"
|
||||
#include "ED_object.h"
|
||||
#include "ED_screen.h"
|
||||
#include "ED_util.h"
|
||||
|
||||
#include "WM_api.h"
|
||||
#include "WM_types.h"
|
||||
|
||||
#include "BIF_gl.h"
|
||||
#include "BIF_glutil.h"
|
||||
|
||||
#include "UI_interface.h"
|
||||
#include "UI_interface_icons.h"
|
||||
#include "UI_resources.h"
|
||||
#include "UI_view2d.h"
|
||||
|
||||
#include "RNA_access.h"
|
||||
#include "RNA_define.h"
|
||||
|
||||
#include "outliner_intern.h"
|
||||
|
||||
/* ****************************************************** */
|
||||
/* Outliner Selection (grey-blue highlight for rows) */
|
||||
|
||||
void outliner_select(SpaceOops *soops, ListBase *lb, int *index, short *selecting)
|
||||
{
|
||||
TreeElement *te;
|
||||
TreeStoreElem *tselem;
|
||||
|
||||
for (te= lb->first; te && *index >= 0; te=te->next, (*index)--) {
|
||||
tselem= TREESTORE(te);
|
||||
|
||||
/* if we've encountered the right item, set its 'Outliner' selection status */
|
||||
if (*index == 0) {
|
||||
/* this should be the last one, so no need to do anything with index */
|
||||
if ((te->flag & TE_ICONROW)==0) {
|
||||
/* -1 value means toggle testing for now... */
|
||||
if (*selecting == -1) {
|
||||
if (tselem->flag & TSE_SELECTED)
|
||||
*selecting= 0;
|
||||
else
|
||||
*selecting= 1;
|
||||
}
|
||||
|
||||
/* set selection */
|
||||
if (*selecting)
|
||||
tselem->flag |= TSE_SELECTED;
|
||||
else
|
||||
tselem->flag &= ~TSE_SELECTED;
|
||||
}
|
||||
}
|
||||
else if ((tselem->flag & TSE_CLOSED)==0) {
|
||||
/* Only try selecting sub-elements if we haven't hit the right element yet
|
||||
*
|
||||
* Hack warning:
|
||||
* Index must be reduced before supplying it to the sub-tree to try to do
|
||||
* selection, however, we need to increment it again for the next loop to
|
||||
* function correctly
|
||||
*/
|
||||
(*index)--;
|
||||
outliner_select(soops, &te->subtree, index, selecting);
|
||||
(*index)++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ****************************************************** */
|
||||
/* Outliner Element Selection/Activation on Click */
|
||||
|
||||
static int tree_element_active_renderlayer(bContext *C, TreeElement *te, TreeStoreElem *tselem, int set)
|
||||
{
|
||||
Scene *sce;
|
||||
|
||||
/* paranoia check */
|
||||
if(te->idcode!=ID_SCE)
|
||||
return 0;
|
||||
sce= (Scene *)tselem->id;
|
||||
|
||||
if(set) {
|
||||
sce->r.actlay= tselem->nr;
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, sce);
|
||||
}
|
||||
else {
|
||||
return sce->r.actlay==tselem->nr;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_set_active_object(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set)
|
||||
{
|
||||
TreeStoreElem *tselem= TREESTORE(te);
|
||||
Scene *sce;
|
||||
Base *base;
|
||||
Object *ob= NULL;
|
||||
|
||||
/* if id is not object, we search back */
|
||||
if(te->idcode==ID_OB) ob= (Object *)tselem->id;
|
||||
else {
|
||||
ob= (Object *)outliner_search_back(soops, te, ID_OB);
|
||||
if(ob==OBACT) return 0;
|
||||
}
|
||||
if(ob==NULL) return 0;
|
||||
|
||||
sce= (Scene *)outliner_search_back(soops, te, ID_SCE);
|
||||
if(sce && scene != sce) {
|
||||
ED_screen_set_scene(C, sce);
|
||||
}
|
||||
|
||||
/* find associated base in current scene */
|
||||
base= object_in_scene(ob, scene);
|
||||
|
||||
if(base) {
|
||||
if(set==2) {
|
||||
/* swap select */
|
||||
if(base->flag & SELECT)
|
||||
ED_base_object_select(base, BA_DESELECT);
|
||||
else
|
||||
ED_base_object_select(base, BA_SELECT);
|
||||
}
|
||||
else {
|
||||
/* deleselect all */
|
||||
scene_deselect_all(scene);
|
||||
ED_base_object_select(base, BA_SELECT);
|
||||
}
|
||||
if(C) {
|
||||
ED_base_object_activate(C, base); /* adds notifier */
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene);
|
||||
}
|
||||
}
|
||||
|
||||
if(ob!=scene->obedit)
|
||||
ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int tree_element_active_material(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set)
|
||||
{
|
||||
TreeElement *tes;
|
||||
Object *ob;
|
||||
|
||||
/* we search for the object parent */
|
||||
ob= (Object *)outliner_search_back(soops, te, ID_OB);
|
||||
// note: ob->matbits can be NULL when a local object points to a library mesh.
|
||||
if(ob==NULL || ob!=OBACT || ob->matbits==NULL) return 0; // just paranoia
|
||||
|
||||
/* searching in ob mat array? */
|
||||
tes= te->parent;
|
||||
if(tes->idcode==ID_OB) {
|
||||
if(set) {
|
||||
ob->actcol= te->index+1;
|
||||
ob->matbits[te->index]= 1; // make ob material active too
|
||||
ob->colbits |= (1<<te->index);
|
||||
}
|
||||
else {
|
||||
if(ob->actcol == te->index+1)
|
||||
if(ob->matbits[te->index]) return 1;
|
||||
}
|
||||
}
|
||||
/* or we search for obdata material */
|
||||
else {
|
||||
if(set) {
|
||||
ob->actcol= te->index+1;
|
||||
ob->matbits[te->index]= 0; // make obdata material active too
|
||||
ob->colbits &= ~(1<<te->index);
|
||||
}
|
||||
else {
|
||||
if(ob->actcol == te->index+1)
|
||||
if(ob->matbits[te->index]==0) return 1;
|
||||
}
|
||||
}
|
||||
if(set) {
|
||||
WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING, NULL);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_texture(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set)
|
||||
{
|
||||
TreeElement *tep;
|
||||
TreeStoreElem /* *tselem,*/ *tselemp;
|
||||
Object *ob=OBACT;
|
||||
SpaceButs *sbuts=NULL;
|
||||
|
||||
if(ob==NULL) return 0; // no active object
|
||||
|
||||
/*tselem= TREESTORE(te);*/ /*UNUSED*/
|
||||
|
||||
/* find buttons area (note, this is undefined really still, needs recode in blender) */
|
||||
/* XXX removed finding sbuts */
|
||||
|
||||
/* where is texture linked to? */
|
||||
tep= te->parent;
|
||||
tselemp= TREESTORE(tep);
|
||||
|
||||
if(tep->idcode==ID_WO) {
|
||||
World *wrld= (World *)tselemp->id;
|
||||
|
||||
if(set) {
|
||||
if(sbuts) {
|
||||
// XXX sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c
|
||||
// XXX sbuts->texfrom= 1;
|
||||
}
|
||||
// XXX extern_set_butspace(F6KEY, 0); // force shading buttons texture
|
||||
wrld->texact= te->index;
|
||||
}
|
||||
else if(tselemp->id == (ID *)(scene->world)) {
|
||||
if(wrld->texact==te->index) return 1;
|
||||
}
|
||||
}
|
||||
else if(tep->idcode==ID_LA) {
|
||||
Lamp *la= (Lamp *)tselemp->id;
|
||||
if(set) {
|
||||
if(sbuts) {
|
||||
// XXX sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c
|
||||
// XXX sbuts->texfrom= 2;
|
||||
}
|
||||
// XXX extern_set_butspace(F6KEY, 0); // force shading buttons texture
|
||||
la->texact= te->index;
|
||||
}
|
||||
else {
|
||||
if(tselemp->id == ob->data) {
|
||||
if(la->texact==te->index) return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(tep->idcode==ID_MA) {
|
||||
Material *ma= (Material *)tselemp->id;
|
||||
if(set) {
|
||||
if(sbuts) {
|
||||
//sbuts->tabo= TAB_SHADING_TEX; // hack from header_buttonswin.c
|
||||
// XXX sbuts->texfrom= 0;
|
||||
}
|
||||
// XXX extern_set_butspace(F6KEY, 0); // force shading buttons texture
|
||||
ma->texact= (char)te->index;
|
||||
|
||||
/* also set active material */
|
||||
ob->actcol= tep->index+1;
|
||||
}
|
||||
else if(tep->flag & TE_ACTIVE) { // this is active material
|
||||
if(ma->texact==te->index) return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(set)
|
||||
WM_event_add_notifier(C, NC_TEXTURE, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int tree_element_active_lamp(bContext *UNUSED(C), Scene *scene, SpaceOops *soops, TreeElement *te, int set)
|
||||
{
|
||||
Object *ob;
|
||||
|
||||
/* we search for the object parent */
|
||||
ob= (Object *)outliner_search_back(soops, te, ID_OB);
|
||||
if(ob==NULL || ob!=OBACT) return 0; // just paranoia
|
||||
|
||||
if(set) {
|
||||
// XXX extern_set_butspace(F5KEY, 0);
|
||||
}
|
||||
else return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_camera(bContext *UNUSED(C), Scene *scene, SpaceOops *soops, TreeElement *te, int set)
|
||||
{
|
||||
Object *ob= (Object *)outliner_search_back(soops, te, ID_OB);
|
||||
|
||||
if(set)
|
||||
return 0;
|
||||
|
||||
return scene->camera == ob;
|
||||
}
|
||||
|
||||
static int tree_element_active_world(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set)
|
||||
{
|
||||
TreeElement *tep;
|
||||
TreeStoreElem *tselem=NULL;
|
||||
Scene *sce=NULL;
|
||||
|
||||
tep= te->parent;
|
||||
if(tep) {
|
||||
tselem= TREESTORE(tep);
|
||||
sce= (Scene *)tselem->id;
|
||||
}
|
||||
|
||||
if(set) { // make new scene active
|
||||
if(sce && scene != sce) {
|
||||
ED_screen_set_scene(C, sce);
|
||||
}
|
||||
}
|
||||
|
||||
if(tep==NULL || tselem->id == (ID *)scene) {
|
||||
if(set) {
|
||||
// XXX extern_set_butspace(F8KEY, 0);
|
||||
}
|
||||
else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_defgroup(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set)
|
||||
{
|
||||
Object *ob;
|
||||
|
||||
/* id in tselem is object */
|
||||
ob= (Object *)tselem->id;
|
||||
if(set) {
|
||||
ob->actdef= te->index+1;
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob);
|
||||
}
|
||||
else {
|
||||
if(ob==OBACT)
|
||||
if(ob->actdef== te->index+1) return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_posegroup(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set)
|
||||
{
|
||||
Object *ob= (Object *)tselem->id;
|
||||
|
||||
if(set) {
|
||||
if (ob->pose) {
|
||||
ob->pose->active_group= te->index+1;
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(ob==OBACT && ob->pose) {
|
||||
if (ob->pose->active_group== te->index+1) return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_posechannel(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set)
|
||||
{
|
||||
Object *ob= (Object *)tselem->id;
|
||||
bArmature *arm= ob->data;
|
||||
bPoseChannel *pchan= te->directdata;
|
||||
|
||||
if(set) {
|
||||
if(!(pchan->bone->flag & BONE_HIDDEN_P)) {
|
||||
|
||||
if(set==2) ED_pose_deselectall(ob, 2); // 2 = clear active tag
|
||||
else ED_pose_deselectall(ob, 0); // 0 = deselect
|
||||
|
||||
if(set==2 && (pchan->bone->flag & BONE_SELECTED)) {
|
||||
pchan->bone->flag &= ~BONE_SELECTED;
|
||||
} else {
|
||||
pchan->bone->flag |= BONE_SELECTED;
|
||||
arm->act_bone= pchan->bone;
|
||||
}
|
||||
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, ob);
|
||||
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(ob==OBACT && ob->pose) {
|
||||
if (pchan->bone->flag & BONE_SELECTED) return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_bone(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tselem, int set)
|
||||
{
|
||||
bArmature *arm= (bArmature *)tselem->id;
|
||||
Bone *bone= te->directdata;
|
||||
|
||||
if(set) {
|
||||
if(!(bone->flag & BONE_HIDDEN_P)) {
|
||||
if(set==2) ED_pose_deselectall(OBACT, 2); // 2 is clear active tag
|
||||
else ED_pose_deselectall(OBACT, 0);
|
||||
|
||||
if(set==2 && (bone->flag & BONE_SELECTED)) {
|
||||
bone->flag &= ~BONE_SELECTED;
|
||||
} else {
|
||||
bone->flag |= BONE_SELECTED;
|
||||
arm->act_bone= bone;
|
||||
}
|
||||
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, OBACT);
|
||||
}
|
||||
}
|
||||
else {
|
||||
Object *ob= OBACT;
|
||||
|
||||
if(ob && ob->data==arm) {
|
||||
if (bone->flag & BONE_SELECTED) return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* ebones only draw in editmode armature */
|
||||
static void tree_element_active_ebone__sel(bContext *C, Scene *scene, bArmature *arm, EditBone *ebone, short sel)
|
||||
{
|
||||
if(sel) {
|
||||
ebone->flag |= BONE_SELECTED|BONE_ROOTSEL|BONE_TIPSEL;
|
||||
arm->act_edbone= ebone;
|
||||
// flush to parent?
|
||||
if(ebone->parent && (ebone->flag & BONE_CONNECTED)) ebone->parent->flag |= BONE_TIPSEL;
|
||||
}
|
||||
else {
|
||||
ebone->flag &= ~(BONE_SELECTED|BONE_ROOTSEL|BONE_TIPSEL);
|
||||
// flush to parent?
|
||||
if(ebone->parent && (ebone->flag & BONE_CONNECTED)) ebone->parent->flag &= ~BONE_TIPSEL;
|
||||
}
|
||||
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_ACTIVE, scene->obedit);
|
||||
}
|
||||
static int tree_element_active_ebone(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tselem), int set)
|
||||
{
|
||||
bArmature *arm= scene->obedit->data;
|
||||
EditBone *ebone= te->directdata;
|
||||
|
||||
if(set==1) {
|
||||
if(!(ebone->flag & BONE_HIDDEN_A)) {
|
||||
ED_armature_deselect_all(scene->obedit, 0); // deselect
|
||||
tree_element_active_ebone__sel(C, scene, arm, ebone, TRUE);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if (set==2) {
|
||||
if(!(ebone->flag & BONE_HIDDEN_A)) {
|
||||
if(!(ebone->flag & BONE_SELECTED)) {
|
||||
tree_element_active_ebone__sel(C, scene, arm, ebone, TRUE);
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
/* entirely selected, so de-select */
|
||||
tree_element_active_ebone__sel(C, scene, arm, ebone, FALSE);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (ebone->flag & BONE_SELECTED) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_modifier(bContext *C, TreeElement *UNUSED(te), TreeStoreElem *tselem, int set)
|
||||
{
|
||||
if(set) {
|
||||
Object *ob= (Object *)tselem->id;
|
||||
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
|
||||
|
||||
// XXX extern_set_butspace(F9KEY, 0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_psys(bContext *C, Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *tselem, int set)
|
||||
{
|
||||
if(set) {
|
||||
Object *ob= (Object *)tselem->id;
|
||||
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob);
|
||||
|
||||
// XXX extern_set_butspace(F7KEY, 0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_constraint(bContext *C, TreeElement *UNUSED(te), TreeStoreElem *tselem, int set)
|
||||
{
|
||||
if(set) {
|
||||
Object *ob= (Object *)tselem->id;
|
||||
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob);
|
||||
// XXX extern_set_butspace(F7KEY, 0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_text(bContext *UNUSED(C), Scene *UNUSED(scene), SpaceOops *UNUSED(soops), TreeElement *UNUSED(te), int UNUSED(set))
|
||||
{
|
||||
// XXX removed
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_pose(bContext *C, Scene *scene, TreeElement *UNUSED(te), TreeStoreElem *tselem, int set)
|
||||
{
|
||||
Object *ob= (Object *)tselem->id;
|
||||
Base *base= object_in_scene(ob, scene);
|
||||
|
||||
if(set) {
|
||||
if(scene->obedit)
|
||||
ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO);
|
||||
|
||||
if(ob->mode & OB_MODE_POSE)
|
||||
ED_armature_exit_posemode(C, base);
|
||||
else
|
||||
ED_armature_enter_posemode(C, base);
|
||||
}
|
||||
else {
|
||||
if(ob->mode & OB_MODE_POSE) return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tree_element_active_sequence(TreeElement *te, TreeStoreElem *UNUSED(tselem), int set)
|
||||
{
|
||||
Sequence *seq= (Sequence*) te->directdata;
|
||||
|
||||
if(set) {
|
||||
// XXX select_single_seq(seq, 1);
|
||||
}
|
||||
else {
|
||||
if(seq->flag & SELECT)
|
||||
return(1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
static int tree_element_active_sequence_dup(Scene *scene, TreeElement *te, TreeStoreElem *UNUSED(tselem), int set)
|
||||
{
|
||||
Sequence *seq, *p;
|
||||
Editing *ed= seq_give_editing(scene, FALSE);
|
||||
|
||||
seq= (Sequence*)te->directdata;
|
||||
if(set==0) {
|
||||
if(seq->flag & SELECT)
|
||||
return(1);
|
||||
return(0);
|
||||
}
|
||||
|
||||
// XXX select_single_seq(seq, 1);
|
||||
p= ed->seqbasep->first;
|
||||
while(p) {
|
||||
if((!p->strip) || (!p->strip->stripdata) || (!p->strip->stripdata->name)) {
|
||||
p= p->next;
|
||||
continue;
|
||||
}
|
||||
|
||||
// if(!strcmp(p->strip->stripdata->name, seq->strip->stripdata->name))
|
||||
// XXX select_single_seq(p, 0);
|
||||
p= p->next;
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
static int tree_element_active_keymap_item(bContext *UNUSED(C), TreeElement *te, TreeStoreElem *UNUSED(tselem), int set)
|
||||
{
|
||||
wmKeyMapItem *kmi= te->directdata;
|
||||
|
||||
if(set==0) {
|
||||
if(kmi->flag & KMI_INACTIVE) return 0;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
kmi->flag ^= KMI_INACTIVE;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------- */
|
||||
|
||||
/* generic call for ID data check or make/check active in UI */
|
||||
int tree_element_active(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set)
|
||||
{
|
||||
|
||||
switch(te->idcode) {
|
||||
case ID_OB:
|
||||
return tree_element_set_active_object(C, scene, soops, te, set);
|
||||
case ID_MA:
|
||||
return tree_element_active_material(C, scene, soops, te, set);
|
||||
case ID_WO:
|
||||
return tree_element_active_world(C, scene, soops, te, set);
|
||||
case ID_LA:
|
||||
return tree_element_active_lamp(C, scene, soops, te, set);
|
||||
case ID_TE:
|
||||
return tree_element_active_texture(C, scene, soops, te, set);
|
||||
case ID_TXT:
|
||||
return tree_element_active_text(C, scene, soops, te, set);
|
||||
case ID_CA:
|
||||
return tree_element_active_camera(C, scene, soops, te, set);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* generic call for non-id data to make/check active in UI */
|
||||
/* Context can be NULL when set==0 */
|
||||
int tree_element_type_active(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, TreeStoreElem *tselem, int set)
|
||||
{
|
||||
switch(tselem->type) {
|
||||
case TSE_DEFGROUP:
|
||||
return tree_element_active_defgroup(C, scene, te, tselem, set);
|
||||
case TSE_BONE:
|
||||
return tree_element_active_bone(C, scene, te, tselem, set);
|
||||
case TSE_EBONE:
|
||||
return tree_element_active_ebone(C, scene, te, tselem, set);
|
||||
case TSE_MODIFIER:
|
||||
return tree_element_active_modifier(C, te, tselem, set);
|
||||
case TSE_LINKED_OB:
|
||||
if(set) tree_element_set_active_object(C, scene, soops, te, set);
|
||||
else if(tselem->id==(ID *)OBACT) return 1;
|
||||
break;
|
||||
case TSE_LINKED_PSYS:
|
||||
return tree_element_active_psys(C, scene, te, tselem, set);
|
||||
case TSE_POSE_BASE:
|
||||
return tree_element_active_pose(C, scene, te, tselem, set);
|
||||
case TSE_POSE_CHANNEL:
|
||||
return tree_element_active_posechannel(C, scene, te, tselem, set);
|
||||
case TSE_CONSTRAINT:
|
||||
return tree_element_active_constraint(C, te, tselem, set);
|
||||
case TSE_R_LAYER:
|
||||
return tree_element_active_renderlayer(C, te, tselem, set);
|
||||
case TSE_POSEGRP:
|
||||
return tree_element_active_posegroup(C, scene, te, tselem, set);
|
||||
case TSE_SEQUENCE:
|
||||
return tree_element_active_sequence(te, tselem, set);
|
||||
case TSE_SEQUENCE_DUP:
|
||||
return tree_element_active_sequence_dup(scene, te, tselem, set);
|
||||
case TSE_KEYMAP_ITEM:
|
||||
return tree_element_active_keymap_item(C, te, tselem, set);
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ================================================ */
|
||||
|
||||
static int do_outliner_item_activate(bContext *C, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, int extend, const float mval[2])
|
||||
{
|
||||
|
||||
if(mval[1]>te->ys && mval[1]<te->ys+UI_UNIT_Y) {
|
||||
TreeStoreElem *tselem= TREESTORE(te);
|
||||
int openclose= 0;
|
||||
|
||||
/* open close icon */
|
||||
if((te->flag & TE_ICONROW)==0) { // hidden icon, no open/close
|
||||
if( mval[0]>te->xs && mval[0]<te->xs+UI_UNIT_X)
|
||||
openclose= 1;
|
||||
}
|
||||
|
||||
if(openclose) {
|
||||
/* all below close/open? */
|
||||
if(extend) {
|
||||
tselem->flag &= ~TSE_CLOSED;
|
||||
outliner_set_flag(soops, &te->subtree, TSE_CLOSED, !outliner_has_one_flag(soops, &te->subtree, TSE_CLOSED, 1));
|
||||
}
|
||||
else {
|
||||
if(tselem->flag & TSE_CLOSED) tselem->flag &= ~TSE_CLOSED;
|
||||
else tselem->flag |= TSE_CLOSED;
|
||||
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
/* name and first icon */
|
||||
else if(mval[0]>te->xs+UI_UNIT_X && mval[0]<te->xend) {
|
||||
|
||||
/* always makes active object */
|
||||
if(tselem->type!=TSE_SEQUENCE && tselem->type!=TSE_SEQ_STRIP && tselem->type!=TSE_SEQUENCE_DUP)
|
||||
tree_element_set_active_object(C, scene, soops, te, 1 + (extend!=0 && tselem->type==0));
|
||||
|
||||
if(tselem->type==0) { // the lib blocks
|
||||
/* editmode? */
|
||||
if(te->idcode==ID_SCE) {
|
||||
if(scene!=(Scene *)tselem->id) {
|
||||
ED_screen_set_scene(C, (Scene *)tselem->id);
|
||||
}
|
||||
}
|
||||
else if(te->idcode==ID_GR) {
|
||||
Group *gr= (Group *)tselem->id;
|
||||
GroupObject *gob;
|
||||
|
||||
if(extend) {
|
||||
int sel= BA_SELECT;
|
||||
for(gob= gr->gobject.first; gob; gob= gob->next) {
|
||||
if(gob->ob->flag & SELECT) {
|
||||
sel= BA_DESELECT;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for(gob= gr->gobject.first; gob; gob= gob->next) {
|
||||
ED_base_object_select(object_in_scene(gob->ob, scene), sel);
|
||||
}
|
||||
}
|
||||
else {
|
||||
scene_deselect_all(scene);
|
||||
|
||||
for(gob= gr->gobject.first; gob; gob= gob->next) {
|
||||
if((gob->ob->flag & SELECT) == 0)
|
||||
ED_base_object_select(object_in_scene(gob->ob, scene), BA_SELECT);
|
||||
}
|
||||
}
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene);
|
||||
}
|
||||
else if(ELEM5(te->idcode, ID_ME, ID_CU, ID_MB, ID_LT, ID_AR)) {
|
||||
WM_operator_name_call(C, "OBJECT_OT_editmode_toggle", WM_OP_INVOKE_REGION_WIN, NULL);
|
||||
} else { // rest of types
|
||||
tree_element_active(C, scene, soops, te, 1);
|
||||
}
|
||||
|
||||
}
|
||||
else tree_element_type_active(C, scene, soops, te, tselem, 1+(extend!=0));
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
for(te= te->subtree.first; te; te= te->next) {
|
||||
if(do_outliner_item_activate(C, scene, ar, soops, te, extend, mval)) return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* event can enterkey, then it opens/closes */
|
||||
static int outliner_item_activate(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
ARegion *ar= CTX_wm_region(C);
|
||||
SpaceOops *soops= CTX_wm_space_outliner(C);
|
||||
TreeElement *te;
|
||||
float fmval[2];
|
||||
int extend= RNA_boolean_get(op->ptr, "extend");
|
||||
|
||||
UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], fmval, fmval+1);
|
||||
|
||||
if(!ELEM3(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF, SO_KEYMAP) && !(soops->flag & SO_HIDE_RESTRICTCOLS) && fmval[0] > ar->v2d.cur.xmax - OL_TOG_RESTRICT_VIEWX)
|
||||
return OPERATOR_CANCELLED;
|
||||
|
||||
for(te= soops->tree.first; te; te= te->next) {
|
||||
if(do_outliner_item_activate(C, scene, ar, soops, te, extend, fmval)) break;
|
||||
}
|
||||
|
||||
if(te) {
|
||||
ED_undo_push(C, "Outliner click event");
|
||||
}
|
||||
else {
|
||||
short selecting= -1;
|
||||
int row;
|
||||
|
||||
/* get row number - 100 here is just a dummy value since we don't need the column */
|
||||
UI_view2d_listview_view_to_cell(&ar->v2d, 1000, UI_UNIT_Y, 0.0f, OL_Y_OFFSET,
|
||||
fmval[0], fmval[1], NULL, &row);
|
||||
|
||||
/* select relevant row */
|
||||
outliner_select(soops, &soops->tree, &row, &selecting);
|
||||
|
||||
soops->storeflag |= SO_TREESTORE_REDRAW;
|
||||
|
||||
ED_undo_push(C, "Outliner selection event");
|
||||
}
|
||||
|
||||
ED_region_tag_redraw(ar);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void OUTLINER_OT_item_activate(wmOperatorType *ot)
|
||||
{
|
||||
ot->name= "Activate Item";
|
||||
ot->idname= "OUTLINER_OT_item_activate";
|
||||
ot->description= "Handle mouse clicks to activate/select items";
|
||||
|
||||
ot->invoke= outliner_item_activate;
|
||||
|
||||
ot->poll= ED_operator_outliner_active;
|
||||
|
||||
RNA_def_boolean(ot->srna, "extend", 1, "Extend", "Extend selection for activation.");
|
||||
}
|
||||
|
||||
/* ****************************************************** */
|
||||
1217
source/blender/editors/space_outliner/outliner_tools.c
Normal file
1217
source/blender/editors/space_outliner/outliner_tools.c
Normal file
File diff suppressed because it is too large
Load Diff
1585
source/blender/editors/space_outliner/outliner_tree.c
Normal file
1585
source/blender/editors/space_outliner/outliner_tree.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -179,6 +179,13 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case NC_ANIMATION:
|
||||
switch(wmn->data) {
|
||||
case ND_NLA_ACTCHANGE:
|
||||
ED_region_tag_redraw(ar);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -83,9 +83,8 @@
|
||||
/* avoid passing multiple args and be more verbose */
|
||||
#define SEQPROP_STARTFRAME (1<<0)
|
||||
#define SEQPROP_ENDFRAME (1<<1)
|
||||
#define SEQPROP_FILES (1<<2)
|
||||
#define SEQPROP_NOPATHS (1<<3)
|
||||
#define SEQPROP_NOCHAN (1<<4)
|
||||
#define SEQPROP_NOPATHS (1<<2)
|
||||
#define SEQPROP_NOCHAN (1<<3)
|
||||
|
||||
#define SELECT 1
|
||||
|
||||
@@ -102,9 +101,6 @@ static void sequencer_generic_props__internal(wmOperatorType *ot, int flag)
|
||||
RNA_def_boolean(ot->srna, "replace_sel", 1, "Replace Selection", "replace the current selection");
|
||||
|
||||
RNA_def_boolean(ot->srna, "overlap", 0, "Allow Overlap", "Don't correct overlap on new sequence strips");
|
||||
|
||||
if(flag & SEQPROP_FILES)
|
||||
RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", "");
|
||||
}
|
||||
|
||||
static void sequencer_generic_invoke_path__internal(bContext *C, wmOperator *op, const char *identifier)
|
||||
@@ -411,8 +407,8 @@ void SEQUENCER_OT_movie_strip_add(struct wmOperatorType *ot)
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH);
|
||||
sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES);
|
||||
WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH|WM_FILESEL_FILES);
|
||||
sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME);
|
||||
RNA_def_boolean(ot->srna, "sound", TRUE, "Sound", "Load sound with the movie");
|
||||
}
|
||||
|
||||
@@ -466,8 +462,8 @@ void SEQUENCER_OT_sound_strip_add(struct wmOperatorType *ot)
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH);
|
||||
sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES);
|
||||
WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH|WM_FILESEL_FILES);
|
||||
sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME);
|
||||
RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory.");
|
||||
}
|
||||
|
||||
@@ -573,8 +569,8 @@ void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot)
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH);
|
||||
sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME|SEQPROP_FILES);
|
||||
WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH|WM_FILESEL_FILES);
|
||||
sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -392,205 +392,6 @@ void recurs_sel_seq(Sequence *seqm)
|
||||
}
|
||||
}
|
||||
|
||||
int event_to_efftype(int event)
|
||||
{
|
||||
if(event==2) return SEQ_CROSS;
|
||||
if(event==3) return SEQ_GAMCROSS;
|
||||
if(event==4) return SEQ_ADD;
|
||||
if(event==5) return SEQ_SUB;
|
||||
if(event==6) return SEQ_MUL;
|
||||
if(event==7) return SEQ_ALPHAOVER;
|
||||
if(event==8) return SEQ_ALPHAUNDER;
|
||||
if(event==9) return SEQ_OVERDROP;
|
||||
if(event==10) return SEQ_PLUGIN;
|
||||
if(event==13) return SEQ_WIPE;
|
||||
if(event==14) return SEQ_GLOW;
|
||||
if(event==15) return SEQ_TRANSFORM;
|
||||
if(event==16) return SEQ_COLOR;
|
||||
if(event==17) return SEQ_SPEED;
|
||||
if(event==18) return SEQ_ADJUSTMENT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void reload_sound_strip(Scene *scene, char *name)
|
||||
{
|
||||
Editing *ed;
|
||||
Sequence *seq, *seqact;
|
||||
SpaceFile *sfile;
|
||||
Sequence *last_seq= seq_active_get(scene);
|
||||
|
||||
ed= scene->ed;
|
||||
|
||||
if(last_seq==0 || last_seq->type!=SEQ_SOUND) return;
|
||||
seqact= last_seq; /* last_seq changes in alloc_sequence */
|
||||
|
||||
/* search sfile */
|
||||
// sfile= scrarea_find_space_of_type(curarea, SPACE_FILE);
|
||||
if(sfile==0) return;
|
||||
|
||||
waitcursor(1);
|
||||
|
||||
seq = sfile_to_snd_sequence(sfile, seqact->start, seqact->machine);
|
||||
printf("seq->type: %i\n", seq->type);
|
||||
if(seq && seq!=seqact) {
|
||||
/* i'm not sure about this one, seems to work without it -- sgefant */
|
||||
seq_free_strip(seqact->strip);
|
||||
|
||||
seqact->strip= seq->strip;
|
||||
|
||||
seqact->len= seq->len;
|
||||
calc_sequence(scene, seqact);
|
||||
|
||||
seq->strip= 0;
|
||||
seq_free_sequence(scene, seq);
|
||||
BLI_remlink(ed->seqbasep, seq);
|
||||
|
||||
seq= ed->seqbasep->first;
|
||||
|
||||
}
|
||||
|
||||
waitcursor(0);
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
static void reload_image_strip(Scene *scene, char *UNUSED(name))
|
||||
{
|
||||
Editing *ed= seq_give_editing(scene, FALSE);
|
||||
Sequence *seq=NULL, *seqact;
|
||||
SpaceFile *sfile=NULL;
|
||||
Sequence *last_seq= seq_active_get(scene);
|
||||
|
||||
|
||||
|
||||
if(last_seq==NULL || last_seq->type!=SEQ_IMAGE) return;
|
||||
seqact= last_seq; /* last_seq changes in alloc_sequence */
|
||||
|
||||
/* search sfile */
|
||||
// sfile= scrarea_find_space_of_type(curarea, SPACE_FILE);
|
||||
if(sfile == NULL) return;
|
||||
|
||||
waitcursor(1);
|
||||
|
||||
// seq= sfile_to_sequence(scene, sfile, seqact->start, seqact->machine, 1); // XXX ADD BACK
|
||||
if(seq && seq!=seqact) {
|
||||
seq_free_strip(seqact->strip);
|
||||
|
||||
seqact->strip= seq->strip;
|
||||
|
||||
seqact->len= seq->len;
|
||||
calc_sequence(scene, seqact);
|
||||
|
||||
seq->strip= NULL;
|
||||
seq_free_sequence(scene, seq);
|
||||
BLI_remlink(ed->seqbasep, seq);
|
||||
|
||||
update_changed_seq_and_deps(scene, seqact, 1, 1);
|
||||
}
|
||||
waitcursor(0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
static void change_sequence(Scene *scene)
|
||||
{
|
||||
Editing *ed= seq_give_editing(scene, FALSE);
|
||||
Sequence *last_seq= seq_active_get(scene);
|
||||
Scene *sce;
|
||||
short event;
|
||||
|
||||
if(last_seq == NULL) return;
|
||||
|
||||
if(last_seq->type & SEQ_EFFECT) {
|
||||
event = pupmenu("Change Effect%t"
|
||||
"|Switch A <-> B %x1"
|
||||
"|Switch B <-> C %x10"
|
||||
"|Plugin%x11"
|
||||
"|Recalculate%x12"
|
||||
"|Cross%x2"
|
||||
"|Gamma Cross%x3"
|
||||
"|Add%x4"
|
||||
"|Sub%x5"
|
||||
"|Mul%x6"
|
||||
"|Alpha Over%x7"
|
||||
"|Alpha Under%x8"
|
||||
"|Alpha Over Drop%x9"
|
||||
"|Wipe%x13"
|
||||
"|Glow%x14"
|
||||
"|Transform%x15"
|
||||
"|Color Generator%x16"
|
||||
"|Speed Control%x17"
|
||||
"|Adjustment Layer%x18");
|
||||
if(event > 0) {
|
||||
if(event==1) {
|
||||
SWAP(Sequence *,last_seq->seq1,last_seq->seq2);
|
||||
}
|
||||
else if(event==10) {
|
||||
SWAP(Sequence *,last_seq->seq2,last_seq->seq3);
|
||||
}
|
||||
else if(event==11) {
|
||||
activate_fileselect(
|
||||
FILE_SPECIAL, "Select Plugin",
|
||||
U.plugseqdir, change_plugin_seq);
|
||||
}
|
||||
else if(event==12);
|
||||
/* recalculate: only new_stripdata */
|
||||
else {
|
||||
/* free previous effect and init new effect */
|
||||
struct SeqEffectHandle sh;
|
||||
|
||||
if (get_sequence_effect_num_inputs(
|
||||
last_seq->type)
|
||||
< get_sequence_effect_num_inputs(
|
||||
event_to_efftype(event))) {
|
||||
error("New effect needs more "
|
||||
"input strips!");
|
||||
} else {
|
||||
sh = get_sequence_effect(last_seq);
|
||||
sh.free(last_seq);
|
||||
|
||||
last_seq->type
|
||||
= event_to_efftype(event);
|
||||
|
||||
sh = get_sequence_effect(last_seq);
|
||||
sh.init(last_seq);
|
||||
}
|
||||
}
|
||||
|
||||
update_changed_seq_and_deps(scene, last_seq, 0, 1);
|
||||
}
|
||||
}
|
||||
else if(last_seq->type == SEQ_IMAGE) {
|
||||
if(okee("Change images")) {
|
||||
activate_fileselect(FILE_SPECIAL,
|
||||
"Select Images",
|
||||
ed->act_imagedir,
|
||||
reload_image_strip);
|
||||
}
|
||||
}
|
||||
else if(last_seq->type == SEQ_MOVIE) {
|
||||
;
|
||||
}
|
||||
else if(last_seq->type == SEQ_SCENE) {
|
||||
event= pupmenu("Change Scene%t|Update Start and End");
|
||||
|
||||
if(event==1) {
|
||||
sce= last_seq->scene;
|
||||
|
||||
last_seq->len= sce->r.efra - sce->r.sfra + 1;
|
||||
last_seq->sfra= sce->r.sfra;
|
||||
|
||||
/* bad code to change seq->len? update_changed_seq_and_deps() expects the strip->len to be OK */
|
||||
new_tstripdata(last_seq);
|
||||
|
||||
update_changed_seq_and_deps(scene, last_seq, 1, 1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequence **selseq1, Sequence **selseq2, Sequence **selseq3, const char **error_str)
|
||||
{
|
||||
Editing *ed = seq_give_editing(scene, FALSE);
|
||||
@@ -1103,6 +904,19 @@ int sequencer_edit_poll(bContext *C)
|
||||
return (seq_give_editing(CTX_data_scene(C), FALSE) != NULL);
|
||||
}
|
||||
|
||||
int sequencer_strip_poll(bContext *C)
|
||||
{
|
||||
Editing *ed;
|
||||
return (((ed= seq_give_editing(CTX_data_scene(C), FALSE)) != NULL) && (ed->act_seq != NULL));
|
||||
}
|
||||
|
||||
int sequencer_strip_has_path_poll(bContext *C)
|
||||
{
|
||||
Editing *ed;
|
||||
Sequence *seq;
|
||||
return (((ed= seq_give_editing(CTX_data_scene(C), FALSE)) != NULL) && ((seq= ed->act_seq) != NULL) && (SEQ_HAS_PATH(seq)));
|
||||
}
|
||||
|
||||
int sequencer_view_poll(bContext *C)
|
||||
{
|
||||
SpaceSeq *sseq= CTX_wm_space_seq(C);
|
||||
@@ -1755,6 +1569,58 @@ void SEQUENCER_OT_delete(wmOperatorType *ot)
|
||||
}
|
||||
|
||||
|
||||
/* offset clear operator */
|
||||
static int sequencer_offset_clear_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
Editing *ed= seq_give_editing(scene, FALSE);
|
||||
Sequence *seq;
|
||||
|
||||
/* for effects, try to find a replacement input */
|
||||
for(seq=ed->seqbasep->first; seq; seq=seq->next) {
|
||||
if((seq->type & SEQ_EFFECT)==0 && (seq->flag & SELECT)) {
|
||||
seq->startofs= seq->endofs= seq->startstill= seq->endstill= 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* updates lengths etc */
|
||||
seq= ed->seqbasep->first;
|
||||
while(seq) {
|
||||
calc_sequence(scene, seq);
|
||||
seq= seq->next;
|
||||
}
|
||||
|
||||
for(seq=ed->seqbasep->first; seq; seq=seq->next) {
|
||||
if((seq->type & SEQ_EFFECT)==0 && (seq->flag & SELECT)) {
|
||||
if(seq_test_overlap(ed->seqbasep, seq)) {
|
||||
shuffle_seq(ed->seqbasep, seq, scene);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
|
||||
void SEQUENCER_OT_offset_clear(wmOperatorType *ot)
|
||||
{
|
||||
|
||||
/* identifiers */
|
||||
ot->name= "Clear Strip Offset";
|
||||
ot->idname= "SEQUENCER_OT_offset_clear";
|
||||
ot->description="Clear strip offsets from the start and end frames";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= sequencer_offset_clear_exec;
|
||||
ot->poll= sequencer_edit_poll;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
|
||||
/* separate_images operator */
|
||||
static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
@@ -2830,3 +2696,227 @@ void SEQUENCER_OT_view_ghost_border(wmOperatorType *ot)
|
||||
/* rna */
|
||||
WM_operator_properties_gesture_border(ot, FALSE);
|
||||
}
|
||||
|
||||
|
||||
/* change ops */
|
||||
|
||||
static EnumPropertyItem prop_change_effect_input_types[] = {
|
||||
{0, "A_B", 0, "A -> B", ""},
|
||||
{1, "B_C", 0, "B -> C", ""},
|
||||
{2, "A_C", 0, "A -> C", ""},
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
static int sequencer_change_effect_input_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
Editing *ed= seq_give_editing(scene, FALSE);
|
||||
Sequence *seq= seq_active_get(scene);
|
||||
|
||||
Sequence **seq_1, **seq_2;
|
||||
|
||||
switch(RNA_enum_get(op->ptr, "swap")) {
|
||||
case 0:
|
||||
seq_1= &seq->seq1;
|
||||
seq_2= &seq->seq2;
|
||||
break;
|
||||
case 1:
|
||||
seq_1= &seq->seq2;
|
||||
seq_2= &seq->seq3;
|
||||
break;
|
||||
default: /* 2 */
|
||||
seq_1= &seq->seq1;
|
||||
seq_2= &seq->seq3;
|
||||
break;
|
||||
}
|
||||
|
||||
if(*seq_1 == NULL || *seq_2 == NULL) {
|
||||
BKE_report(op->reports, RPT_ERROR, "One of the effect inputs is unset, can't swap");
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
else {
|
||||
SWAP(Sequence *, *seq_1, *seq_2);
|
||||
}
|
||||
|
||||
update_changed_seq_and_deps(scene, seq, 0, 1);
|
||||
|
||||
/* important else we dont get the imbuf cache flushed */
|
||||
free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE);
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void SEQUENCER_OT_change_effect_input(struct wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Change Effect Input";
|
||||
ot->idname= "SEQUENCER_OT_change_effect_input";
|
||||
ot->description="";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= sequencer_change_effect_input_exec;
|
||||
ot->poll= sequencer_effect_poll;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
ot->prop= RNA_def_enum(ot->srna, "swap", prop_change_effect_input_types, 0, "Swap", "The effect inputs to swap");
|
||||
}
|
||||
|
||||
static int sequencer_change_effect_type_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
Editing *ed= seq_give_editing(scene, FALSE);
|
||||
Sequence *seq= seq_active_get(scene);
|
||||
const int new_type= RNA_enum_get(op->ptr, "type");
|
||||
|
||||
/* free previous effect and init new effect */
|
||||
struct SeqEffectHandle sh;
|
||||
|
||||
if ((seq->type & SEQ_EFFECT) == 0) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
/* can someone explain the logic behind only allowing to increse this,
|
||||
* copied from 2.4x - campbell */
|
||||
if (get_sequence_effect_num_inputs(seq->type) <
|
||||
get_sequence_effect_num_inputs(new_type)
|
||||
) {
|
||||
BKE_report(op->reports, RPT_ERROR, "New effect needs more input strips");
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
else {
|
||||
sh = get_sequence_effect(seq);
|
||||
sh.free(seq);
|
||||
|
||||
seq->type= new_type;
|
||||
|
||||
sh = get_sequence_effect(seq);
|
||||
sh.init(seq);
|
||||
}
|
||||
|
||||
/* update */
|
||||
update_changed_seq_and_deps(scene, seq, 0, 1);
|
||||
|
||||
/* important else we dont get the imbuf cache flushed */
|
||||
free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE);
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void SEQUENCER_OT_change_effect_type(struct wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Change Effect Type";
|
||||
ot->idname= "SEQUENCER_OT_change_effect_type";
|
||||
ot->description="";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= sequencer_change_effect_type_exec;
|
||||
ot->poll= sequencer_effect_poll;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
ot->prop= RNA_def_enum(ot->srna, "type", sequencer_prop_effect_types, SEQ_CROSS, "Type", "Sequencer effect type");
|
||||
}
|
||||
|
||||
static int sequencer_change_path_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
Editing *ed= seq_give_editing(scene, FALSE);
|
||||
Sequence *seq= seq_active_get(scene);
|
||||
|
||||
if(seq->type == SEQ_IMAGE) {
|
||||
char directory[FILE_MAX];
|
||||
const int len= RNA_property_collection_length(op->ptr, RNA_struct_find_property(op->ptr, "files"));
|
||||
StripElem *se;
|
||||
|
||||
if(len==0)
|
||||
return OPERATOR_CANCELLED;
|
||||
|
||||
RNA_string_get(op->ptr, "directory", directory);
|
||||
BLI_strncpy(seq->strip->dir, directory, sizeof(seq->strip->dir));
|
||||
|
||||
if(seq->strip->stripdata) {
|
||||
MEM_freeN(seq->strip->stripdata);
|
||||
}
|
||||
seq->strip->stripdata= se= MEM_callocN(len*sizeof(StripElem), "stripelem");
|
||||
|
||||
RNA_BEGIN(op->ptr, itemptr, "files") {
|
||||
char *filename= RNA_string_get_alloc(&itemptr, "name", NULL, 0);
|
||||
BLI_strncpy(se->name, filename, sizeof(se->name));
|
||||
MEM_freeN(filename);
|
||||
se++;
|
||||
}
|
||||
RNA_END;
|
||||
|
||||
/* reset these else we wont see all the images */
|
||||
seq->anim_startofs= seq->anim_endofs= 0;
|
||||
|
||||
/* correct start/end frames so we dont move
|
||||
* important not to set seq->len= len; allow the function to handle it */
|
||||
reload_sequence_new_file(scene, seq, TRUE);
|
||||
|
||||
calc_sequence(scene, seq);
|
||||
|
||||
/* important else we dont get the imbuf cache flushed */
|
||||
free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE);
|
||||
}
|
||||
else {
|
||||
/* lame, set rna filepath */
|
||||
PointerRNA seq_ptr;
|
||||
char filepath[FILE_MAX];
|
||||
|
||||
RNA_pointer_create(&scene->id, &RNA_Sequence, seq, &seq_ptr);
|
||||
|
||||
RNA_string_get(op->ptr, "filepath", filepath);
|
||||
RNA_string_set(&seq_ptr, "filepath", filepath);
|
||||
}
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
static int sequencer_change_path_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
Sequence *seq= seq_active_get(scene);
|
||||
|
||||
RNA_string_set(op->ptr, "directory", seq->strip->dir);
|
||||
|
||||
/* set default display depending on seq type */
|
||||
if(seq->type == SEQ_IMAGE) {
|
||||
RNA_boolean_set(op->ptr, "filter_movie", 0);
|
||||
}
|
||||
else {
|
||||
RNA_boolean_set(op->ptr, "filter_image", 0);
|
||||
}
|
||||
|
||||
WM_event_add_fileselect(C, op);
|
||||
|
||||
return OPERATOR_RUNNING_MODAL;
|
||||
}
|
||||
|
||||
void SEQUENCER_OT_change_path(struct wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Change Data/Files";
|
||||
ot->idname= "SEQUENCER_OT_change_path";
|
||||
ot->description="";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= sequencer_change_path_exec;
|
||||
ot->invoke= sequencer_change_path_invoke;
|
||||
ot->poll= sequencer_strip_has_path_poll;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH|WM_FILESEL_FILEPATH|WM_FILESEL_FILES);
|
||||
}
|
||||
|
||||
@@ -70,6 +70,8 @@ int seq_effect_find_selected(struct Scene *scene, struct Sequence *activeseq, in
|
||||
|
||||
/* operator helpers */
|
||||
int sequencer_edit_poll(struct bContext *C);
|
||||
int sequencer_strip_poll(struct bContext *C);
|
||||
int sequencer_strip_has_path_poll(struct bContext *C);
|
||||
int sequencer_view_poll(struct bContext *C);
|
||||
|
||||
/* externs */
|
||||
@@ -91,6 +93,7 @@ void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_swap_inputs(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_duplicate(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_delete(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_offset_clear(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_images_separate(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_meta_toggle(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_meta_make(struct wmOperatorType *ot);
|
||||
@@ -108,6 +111,10 @@ void SEQUENCER_OT_view_selected(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_view_zoom_ratio(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_view_ghost_border(struct wmOperatorType *ot);
|
||||
|
||||
void SEQUENCER_OT_change_effect_input(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_change_effect_type(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_change_path(struct wmOperatorType *ot);
|
||||
|
||||
void SEQUENCER_OT_copy(struct wmOperatorType *ot);
|
||||
void SEQUENCER_OT_paste(struct wmOperatorType *ot);
|
||||
|
||||
|
||||
@@ -68,6 +68,7 @@ void sequencer_operatortypes(void)
|
||||
WM_operatortype_append(SEQUENCER_OT_swap_inputs);
|
||||
WM_operatortype_append(SEQUENCER_OT_duplicate);
|
||||
WM_operatortype_append(SEQUENCER_OT_delete);
|
||||
WM_operatortype_append(SEQUENCER_OT_offset_clear);
|
||||
WM_operatortype_append(SEQUENCER_OT_images_separate);
|
||||
WM_operatortype_append(SEQUENCER_OT_meta_toggle);
|
||||
WM_operatortype_append(SEQUENCER_OT_meta_make);
|
||||
@@ -86,6 +87,10 @@ void sequencer_operatortypes(void)
|
||||
WM_operatortype_append(SEQUENCER_OT_view_zoom_ratio);
|
||||
WM_operatortype_append(SEQUENCER_OT_view_ghost_border);
|
||||
|
||||
WM_operatortype_append(SEQUENCER_OT_change_effect_input);
|
||||
WM_operatortype_append(SEQUENCER_OT_change_effect_type);
|
||||
WM_operatortype_append(SEQUENCER_OT_change_path);
|
||||
|
||||
/* sequencer_select.c */
|
||||
WM_operatortype_append(SEQUENCER_OT_select_all_toggle);
|
||||
WM_operatortype_append(SEQUENCER_OT_select_inverse);
|
||||
@@ -145,6 +150,8 @@ void sequencer_keymap(wmKeyConfig *keyconf)
|
||||
WM_keymap_add_item(keymap, "SEQUENCER_OT_reassign_inputs", RKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "SEQUENCER_OT_reload", RKEY, KM_PRESS, KM_ALT, 0);
|
||||
|
||||
WM_keymap_add_item(keymap, "SEQUENCER_OT_offset_clear", OKEY, KM_PRESS, KM_ALT, 0);
|
||||
|
||||
WM_keymap_add_item(keymap, "SEQUENCER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
|
||||
|
||||
WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", XKEY, KM_PRESS, 0, 0);
|
||||
@@ -241,6 +248,8 @@ void sequencer_keymap(wmKeyConfig *keyconf)
|
||||
|
||||
WM_keymap_add_menu(keymap, "SEQUENCER_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0);
|
||||
|
||||
WM_keymap_add_menu(keymap, "SEQUENCER_MT_change", CKEY, KM_PRESS, 0, 0);
|
||||
|
||||
kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", OKEY, KM_PRESS, 0, 0);
|
||||
RNA_string_set(kmi->ptr, "data_path", "scene.sequence_editor.overlay_frame");
|
||||
RNA_int_set(kmi->ptr, "value", 0);
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
* \ingroup spview3d
|
||||
*/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
@@ -73,7 +72,7 @@
|
||||
|
||||
#include "view3d_intern.h" // own include
|
||||
|
||||
/***/
|
||||
/**************************** Face Select Mode *******************************/
|
||||
|
||||
/* Flags for marked edges */
|
||||
enum {
|
||||
@@ -81,16 +80,13 @@ enum {
|
||||
eEdge_Select = (1<<1),
|
||||
};
|
||||
|
||||
/* Creates a hash of edges to flags indicating
|
||||
* adjacent tface select/active/etc flags.
|
||||
*/
|
||||
/* Creates a hash of edges to flags indicating selected/visible */
|
||||
static void get_marked_edge_info__orFlags(EdgeHash *eh, int v0, int v1, int flags)
|
||||
{
|
||||
int *flags_p;
|
||||
|
||||
if (!BLI_edgehash_haskey(eh, v0, v1)) {
|
||||
if(!BLI_edgehash_haskey(eh, v0, v1))
|
||||
BLI_edgehash_insert(eh, v0, v1, NULL);
|
||||
}
|
||||
|
||||
flags_p = (int*) BLI_edgehash_lookup_p(eh, v0, v1);
|
||||
*flags_p |= flags;
|
||||
@@ -99,72 +95,50 @@ static void get_marked_edge_info__orFlags(EdgeHash *eh, int v0, int v1, int flag
|
||||
static EdgeHash *get_tface_mesh_marked_edge_info(Mesh *me)
|
||||
{
|
||||
EdgeHash *eh = BLI_edgehash_new();
|
||||
int i;
|
||||
MFace *mf;
|
||||
int i;
|
||||
|
||||
for(i=0; i<me->totface; i++) {
|
||||
mf = &me->mface[i];
|
||||
|
||||
if (mf->v3) {
|
||||
if(!(mf->flag & ME_HIDE)) {
|
||||
unsigned int flags = eEdge_Visible;
|
||||
if(mf->flag & ME_FACE_SEL) flags |= eEdge_Select;
|
||||
|
||||
get_marked_edge_info__orFlags(eh, mf->v1, mf->v2, flags);
|
||||
get_marked_edge_info__orFlags(eh, mf->v2, mf->v3, flags);
|
||||
|
||||
if(mf->v4) {
|
||||
get_marked_edge_info__orFlags(eh, mf->v3, mf->v4, flags);
|
||||
get_marked_edge_info__orFlags(eh, mf->v4, mf->v1, flags);
|
||||
} else {
|
||||
}
|
||||
else
|
||||
get_marked_edge_info__orFlags(eh, mf->v3, mf->v1, flags);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return eh;
|
||||
}
|
||||
|
||||
|
||||
static int draw_tfaces3D__setHiddenOpts(void *userData, int index)
|
||||
static int draw_mesh_face_select__setHiddenOpts(void *userData, int index)
|
||||
{
|
||||
struct { Mesh *me; EdgeHash *eh; } *data = userData;
|
||||
Mesh *me= data->me;
|
||||
MEdge *med = &me->medge[index];
|
||||
uintptr_t flags = (intptr_t) BLI_edgehash_lookup(data->eh, med->v1, med->v2);
|
||||
|
||||
if((me->drawflag & ME_DRAWSEAMS) && (med->flag&ME_SEAM)) {
|
||||
return 0;
|
||||
} else if(me->drawflag & ME_DRAWEDGES){
|
||||
if (me->drawflag & ME_HIDDENEDGES) {
|
||||
if(me->drawflag & ME_DRAWEDGES) {
|
||||
if(me->drawflag & ME_HIDDENEDGES)
|
||||
return 1;
|
||||
} else {
|
||||
else
|
||||
return (flags & eEdge_Visible);
|
||||
}
|
||||
} else {
|
||||
else
|
||||
return (flags & eEdge_Select);
|
||||
}
|
||||
}
|
||||
|
||||
static int draw_tfaces3D__setSeamOpts(void *userData, int index)
|
||||
{
|
||||
struct { Mesh *me; EdgeHash *eh; } *data = userData;
|
||||
Mesh *me= data->me;
|
||||
MEdge *med = &data->me->medge[index];
|
||||
uintptr_t flags = (intptr_t) BLI_edgehash_lookup(data->eh, med->v1, med->v2);
|
||||
|
||||
if (med->flag & ME_SEAM) {
|
||||
if (me->drawflag & ME_HIDDENEDGES) {
|
||||
return 1;
|
||||
} else {
|
||||
return (flags & eEdge_Visible);
|
||||
}
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int draw_tfaces3D__setSelectOpts(void *userData, int index)
|
||||
static int draw_mesh_face_select__setSelectOpts(void *userData, int index)
|
||||
{
|
||||
struct { Mesh *me; EdgeHash *eh; } *data = userData;
|
||||
MEdge *med = &data->me->medge[index];
|
||||
@@ -173,34 +147,8 @@ static int draw_tfaces3D__setSelectOpts(void *userData, int index)
|
||||
return flags & eEdge_Select;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static int draw_tfaces3D__setActiveOpts(void *userData, int index)
|
||||
{
|
||||
struct { Mesh *me; EdgeHash *eh; } *data = userData;
|
||||
MEdge *med = &data->me->medge[index];
|
||||
uintptr_t flags = (intptr_t) BLI_edgehash_lookup(data->eh, med->v1, med->v2);
|
||||
|
||||
if (flags & eEdge_Select) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int draw_tfaces3D__drawFaceOpts(void *userData, int index)
|
||||
{
|
||||
Mesh *me = (Mesh*)userData;
|
||||
|
||||
MFace *mface = &me->mface[index];
|
||||
if (!(mface->flag&ME_HIDE) && (mface->flag&ME_FACE_SEL))
|
||||
return 2; /* Don't set color */
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* draws unselected */
|
||||
static int draw_tfaces3D__drawFaceOptsInv(void *userData, int index)
|
||||
static int draw_mesh_face_select__drawFaceOptsInv(void *userData, int index)
|
||||
{
|
||||
Mesh *me = (Mesh*)userData;
|
||||
|
||||
@@ -211,7 +159,7 @@ static int draw_tfaces3D__drawFaceOptsInv(void *userData, int index)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void draw_tfaces3D(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm, short draw_seams)
|
||||
static void draw_mesh_face_select(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm)
|
||||
{
|
||||
struct { Mesh *me; EdgeHash *eh; } data;
|
||||
|
||||
@@ -225,30 +173,16 @@ static void draw_tfaces3D(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm, short d
|
||||
/* Draw (Hidden) Edges */
|
||||
setlinestyle(1);
|
||||
UI_ThemeColor(TH_EDGE_FACESEL);
|
||||
dm->drawMappedEdges(dm, draw_tfaces3D__setHiddenOpts, &data);
|
||||
dm->drawMappedEdges(dm, draw_mesh_face_select__setHiddenOpts, &data);
|
||||
setlinestyle(0);
|
||||
|
||||
/* Draw Seams */
|
||||
if(draw_seams && me->drawflag & ME_DRAWSEAMS) {
|
||||
UI_ThemeColor(TH_EDGE_SEAM);
|
||||
glLineWidth(2);
|
||||
dm->drawMappedEdges(dm, draw_tfaces3D__setSeamOpts, &data);
|
||||
glLineWidth(1);
|
||||
}
|
||||
|
||||
/* Draw Selected Faces */
|
||||
if(me->drawflag & ME_DRAWFACES) {
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
#if 0
|
||||
UI_ThemeColor4(TH_FACE_SELECT);
|
||||
|
||||
dm->drawMappedFacesTex(dm, draw_tfaces3D__drawFaceOpts, (void*)me);
|
||||
#else
|
||||
/* dull unselected faces so as not to get in the way of seeing color */
|
||||
glColor4ub(96, 96, 96, 64);
|
||||
dm->drawMappedFacesTex(dm, draw_tfaces3D__drawFaceOptsInv, (void*)me);
|
||||
#endif
|
||||
dm->drawMappedFacesTex(dm, draw_mesh_face_select__drawFaceOptsInv, (void*)me);
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
}
|
||||
@@ -258,7 +192,7 @@ static void draw_tfaces3D(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm, short d
|
||||
/* Draw Stippled Outline for selected faces */
|
||||
glColor3ub(255, 255, 255);
|
||||
setlinestyle(1);
|
||||
dm->drawMappedEdges(dm, draw_tfaces3D__setSelectOpts, &data);
|
||||
dm->drawMappedEdges(dm, draw_mesh_face_select__setSelectOpts, &data);
|
||||
setlinestyle(0);
|
||||
|
||||
bglPolygonOffset(rv3d->dist, 0.0); // resets correctly now, even after calling accumulated offsets
|
||||
@@ -266,6 +200,8 @@ static void draw_tfaces3D(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm, short d
|
||||
BLI_edgehash_free(data.eh, NULL);
|
||||
}
|
||||
|
||||
/***************************** Texture Drawing ******************************/
|
||||
|
||||
static Material *give_current_material_or_def(Object *ob, int matnr)
|
||||
{
|
||||
extern Material defmaterial; // render module abuse...
|
||||
@@ -695,18 +631,21 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *o
|
||||
|
||||
if(ob->mode & OB_MODE_EDIT) {
|
||||
dm->drawMappedFacesTex(dm, draw_em_tf_mapped__set_draw, me->edit_btmesh);
|
||||
} else if(faceselect) {
|
||||
}
|
||||
else if(faceselect) {
|
||||
if(ob->mode & OB_MODE_WEIGHT_PAINT)
|
||||
dm->drawMappedFaces(dm, wpaint__setSolidDrawOptions, me, 1, GPU_enable_material);
|
||||
else
|
||||
dm->drawMappedFacesTex(dm, me->mface ? draw_tface_mapped__set_draw : NULL, me);
|
||||
}
|
||||
else {
|
||||
if( GPU_buffer_legacy(dm) )
|
||||
if(GPU_buffer_legacy(dm)) {
|
||||
dm->drawFacesTex(dm, draw_tface__set_draw_legacy);
|
||||
}
|
||||
else {
|
||||
if(!CustomData_has_layer(&dm->faceData,CD_TEXTURE_MCOL))
|
||||
add_tface_color_layer(dm);
|
||||
|
||||
dm->drawFacesTex(dm, draw_tface__set_draw);
|
||||
}
|
||||
}
|
||||
@@ -719,7 +658,7 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *o
|
||||
|
||||
/* draw edges and selected faces over textured mesh */
|
||||
if(!(ob == scene->obedit) && faceselect)
|
||||
draw_tfaces3D(rv3d, me, dm, ob->mode & OB_MODE_WEIGHT_PAINT);
|
||||
draw_mesh_face_select(rv3d, me, dm);
|
||||
|
||||
/* reset from negative scale correction */
|
||||
glFrontFace(GL_CCW);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user