Merge with trunk, revision 28528 - 28976.
authorJoerg Mueller <nexyon@gmail.com>
Tue, 25 May 2010 12:40:33 +0000 (12:40 +0000)
committerJoerg Mueller <nexyon@gmail.com>
Tue, 25 May 2010 12:40:33 +0000 (12:40 +0000)
477 files changed:
CMake/macros.cmake
CMakeLists.txt
SConstruct
config/darwin-config.py
config/linux2-config.py
config/linuxcross-config.py
config/win32-mingw-config.py
config/win32-vc-config.py
config/win64-vc-config.py
intern/audaspace/ffmpeg/AUD_FFMPEGFactory.cpp
intern/audaspace/intern/AUD_C-API.cpp
intern/audaspace/intern/AUD_FileFactory.cpp
intern/ghost/CMakeLists.txt
intern/ghost/intern/GHOST_DropTargetWin32.cpp
intern/ghost/intern/GHOST_SystemCocoa.mm
intern/ghost/intern/GHOST_WindowCocoa.mm
intern/guardedalloc/MEM_guardedalloc.h
intern/guardedalloc/intern/mallocn.c
projectfiles_vc9/blender/imbuf/BL_imbuf.vcproj
release/datafiles/blenderbuttons
release/scripts/io/engine_render_pov.py
release/scripts/io/export_fbx.py
release/scripts/io/import_anim_bvh.py
release/scripts/io/import_shape_mdd.py
release/scripts/io/netrender/__init__.py
release/scripts/io/netrender/model.py
release/scripts/io/netrender/operators.py
release/scripts/io/netrender/repath.py [new file with mode: 0755]
release/scripts/io/netrender/slave.py
release/scripts/io/netrender/ui.py
release/scripts/io/netrender/utils.py
release/scripts/keyingsets/keyingsets_utils.py
release/scripts/modules/add_object_utils.py [new file with mode: 0644]
release/scripts/modules/bpy/utils.py
release/scripts/modules/bpy_types.py
release/scripts/modules/rigify/arm_biped.py
release/scripts/modules/rigify/eye_balls.py
release/scripts/modules/rigify/eye_lid.py
release/scripts/modules/rigify/finger_curl.py
release/scripts/modules/rigify/leg_biped.py
release/scripts/modules/rigify/leg_quadruped.py
release/scripts/modules/rigify/mouth.py
release/scripts/modules/rigify/neck.py
release/scripts/modules/rigify/neck_flex.py
release/scripts/modules/rigify/palm_curl.py
release/scripts/modules/rigify/shape_key_control.py
release/scripts/modules/rigify/shape_key_distance.py
release/scripts/modules/rigify/shape_key_rotdiff.py
release/scripts/modules/rigify/spine_pivot_flex.py
release/scripts/modules/rigify/tail_control.py
release/scripts/modules/rigify/tongue.py
release/scripts/modules/rigify_utils.py
release/scripts/modules/rna_info.py
release/scripts/modules/rna_prop_ui.py
release/scripts/op/add_mesh_torus.py
release/scripts/op/console_python.py
release/scripts/op/image.py
release/scripts/op/nla.py
release/scripts/op/object.py
release/scripts/op/presets.py
release/scripts/op/sequencer.py
release/scripts/op/uv.py
release/scripts/op/uvcalc_follow_active.py
release/scripts/op/vertexpaint_dirt.py
release/scripts/op/wm.py
release/scripts/templates/operator_modal_view3d.py [new file with mode: 0644]
release/scripts/ui/properties_animviz.py
release/scripts/ui/properties_data_armature.py
release/scripts/ui/properties_data_armature_rigify.py
release/scripts/ui/properties_data_bone.py
release/scripts/ui/properties_data_camera.py
release/scripts/ui/properties_data_curve.py
release/scripts/ui/properties_data_empty.py
release/scripts/ui/properties_data_lamp.py
release/scripts/ui/properties_data_lattice.py
release/scripts/ui/properties_data_mesh.py
release/scripts/ui/properties_data_metaball.py
release/scripts/ui/properties_data_modifier.py
release/scripts/ui/properties_game.py
release/scripts/ui/properties_material.py
release/scripts/ui/properties_object.py
release/scripts/ui/properties_object_constraint.py
release/scripts/ui/properties_particle.py
release/scripts/ui/properties_physics_cloth.py
release/scripts/ui/properties_physics_common.py
release/scripts/ui/properties_physics_field.py
release/scripts/ui/properties_physics_fluid.py
release/scripts/ui/properties_physics_smoke.py
release/scripts/ui/properties_physics_softbody.py
release/scripts/ui/properties_render.py
release/scripts/ui/properties_scene.py
release/scripts/ui/properties_texture.py
release/scripts/ui/properties_world.py
release/scripts/ui/space_image.py
release/scripts/ui/space_info.py
release/scripts/ui/space_logic.py
release/scripts/ui/space_node.py
release/scripts/ui/space_outliner.py
release/scripts/ui/space_sequencer.py
release/scripts/ui/space_text.py
release/scripts/ui/space_time.py
release/scripts/ui/space_userpref.py
release/scripts/ui/space_userpref_keymap.py
release/scripts/ui/space_view3d.py
source/blender/blenkernel/BKE_colortools.h
source/blender/blenkernel/BKE_global.h
source/blender/blenkernel/BKE_image.h
source/blender/blenkernel/BKE_multires.h
source/blender/blenkernel/BKE_sequencer.h
source/blender/blenkernel/BKE_smoke.h
source/blender/blenkernel/BKE_utildefines.h
source/blender/blenkernel/CMakeLists.txt
source/blender/blenkernel/SConscript
source/blender/blenkernel/intern/BME_tools.c
source/blender/blenkernel/intern/DerivedMesh.c
source/blender/blenkernel/intern/Makefile
source/blender/blenkernel/intern/action.c
source/blender/blenkernel/intern/anim.c
source/blender/blenkernel/intern/anim_sys.c
source/blender/blenkernel/intern/armature.c
source/blender/blenkernel/intern/blender.c
source/blender/blenkernel/intern/bmfont.c
source/blender/blenkernel/intern/colortools.c
source/blender/blenkernel/intern/customdata.c
source/blender/blenkernel/intern/depsgraph.c
source/blender/blenkernel/intern/displist.c
source/blender/blenkernel/intern/group.c
source/blender/blenkernel/intern/icons.c
source/blender/blenkernel/intern/image.c
source/blender/blenkernel/intern/multires.c
source/blender/blenkernel/intern/nla.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/packedFile.c
source/blender/blenkernel/intern/particle.c
source/blender/blenkernel/intern/particle_system.c
source/blender/blenkernel/intern/pointcache.c
source/blender/blenkernel/intern/sca.c
source/blender/blenkernel/intern/sequencer.c
source/blender/blenkernel/intern/smoke.c
source/blender/blenkernel/intern/softbody.c
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/blenkernel/intern/writeavi.c
source/blender/blenkernel/intern/writeffmpeg.c
source/blender/blenlib/BLI_args.h
source/blender/blenlib/BLI_bpath.h
source/blender/blenlib/BLI_ghash.h
source/blender/blenlib/BLI_math_vector.h
source/blender/blenlib/BLI_path_util.h
source/blender/blenlib/BLI_storage.h
source/blender/blenlib/intern/BLI_args.c
source/blender/blenlib/intern/BLI_ghash.c
source/blender/blenlib/intern/bpath.c
source/blender/blenlib/intern/math_vector_inline.c
source/blender/blenlib/intern/path_util.c
source/blender/blenlib/intern/pbvh.c
source/blender/blenlib/intern/storage.c
source/blender/blenloader/BLO_readfile.h
source/blender/blenloader/BLO_writefile.h
source/blender/blenloader/intern/readblenentry.c
source/blender/blenloader/intern/readfile.c
source/blender/blenloader/intern/writefile.c
source/blender/blenpluginapi/iff.h
source/blender/blenpluginapi/intern/pluginapi.c
source/blender/collada/Makefile
source/blender/editors/CMakeLists.txt
source/blender/editors/animation/anim_channels_edit.c
source/blender/editors/animation/anim_draw.c
source/blender/editors/animation/anim_filter.c
source/blender/editors/animation/anim_markers.c
source/blender/editors/animation/keyframing.c
source/blender/editors/animation/keyingsets.c
source/blender/editors/armature/editarmature.c
source/blender/editors/armature/editarmature_retarget.c
source/blender/editors/armature/editarmature_sketch.c
source/blender/editors/armature/poselib.c
source/blender/editors/armature/reeb.c
source/blender/editors/curve/curve_intern.h
source/blender/editors/curve/curve_ops.c
source/blender/editors/curve/editcurve.c
source/blender/editors/datafiles/B.blend.c
source/blender/editors/datafiles/blenderbuttons.c
source/blender/editors/include/ED_anim_api.h
source/blender/editors/include/ED_curve.h
source/blender/editors/include/UI_icons.h
source/blender/editors/include/UI_view2d.h
source/blender/editors/interface/interface_draw.c
source/blender/editors/interface/interface_handlers.c
source/blender/editors/interface/interface_icons.c
source/blender/editors/interface/interface_layout.c
source/blender/editors/interface/interface_regions.c
source/blender/editors/interface/interface_templates.c
source/blender/editors/interface/resources.c
source/blender/editors/interface/view2d.c
source/blender/editors/interface/view2d_ops.c
source/blender/editors/mesh/editmesh_loop.c
source/blender/editors/mesh/editmesh_tools.c
source/blender/editors/mesh/mesh_data.c
source/blender/editors/mesh/meshtools.c
source/blender/editors/object/object_add.c
source/blender/editors/object/object_constraint.c
source/blender/editors/object/object_edit.c
source/blender/editors/object/object_group.c
source/blender/editors/object/object_intern.h
source/blender/editors/object/object_modifier.c
source/blender/editors/object/object_ops.c
source/blender/editors/object/object_relations.c
source/blender/editors/object/object_select.c
source/blender/editors/object/object_vgroup.c
source/blender/editors/physics/physics_pointcache.c
source/blender/editors/render/render_internal.c
source/blender/editors/render/render_opengl.c
source/blender/editors/render/render_shading.c
source/blender/editors/screen/screen_ops.c
source/blender/editors/screen/screendump.c
source/blender/editors/sculpt_paint/paint_vertex.c
source/blender/editors/space_action/action_edit.c
source/blender/editors/space_action/action_select.c
source/blender/editors/space_console/Makefile
source/blender/editors/space_console/SConscript
source/blender/editors/space_console/space_console.c
source/blender/editors/space_file/Makefile
source/blender/editors/space_file/SConscript
source/blender/editors/space_file/file_draw.c
source/blender/editors/space_file/file_intern.h
source/blender/editors/space_file/file_ops.c
source/blender/editors/space_file/filelist.c
source/blender/editors/space_file/filelist.h
source/blender/editors/space_file/filesel.c
source/blender/editors/space_file/space_file.c
source/blender/editors/space_file/writeimage.c
source/blender/editors/space_graph/graph_buttons.c
source/blender/editors/space_graph/graph_draw.c
source/blender/editors/space_graph/graph_edit.c
source/blender/editors/space_graph/graph_select.c
source/blender/editors/space_graph/space_graph.c
source/blender/editors/space_image/Makefile
source/blender/editors/space_image/SConscript
source/blender/editors/space_image/image_buttons.c
source/blender/editors/space_image/image_ops.c
source/blender/editors/space_image/space_image.c
source/blender/editors/space_logic/logic_ops.c
source/blender/editors/space_logic/logic_window.c
source/blender/editors/space_logic/space_logic.c
source/blender/editors/space_nla/nla_edit.c
source/blender/editors/space_nla/nla_select.c
source/blender/editors/space_node/node_draw.c
source/blender/editors/space_node/node_edit.c
source/blender/editors/space_node/node_intern.h
source/blender/editors/space_node/node_ops.c
source/blender/editors/space_node/node_select.c
source/blender/editors/space_node/space_node.c
source/blender/editors/space_outliner/outliner.c
source/blender/editors/space_outliner/outliner_ops.c
source/blender/editors/space_sequencer/sequencer_edit.c
source/blender/editors/space_sequencer/sequencer_intern.h
source/blender/editors/space_sequencer/sequencer_select.c
source/blender/editors/space_sequencer/space_sequencer.c
source/blender/editors/space_text/space_text.c
source/blender/editors/space_view3d/drawanimviz.c
source/blender/editors/space_view3d/drawobject.c
source/blender/editors/space_view3d/drawvolume.c
source/blender/editors/space_view3d/space_view3d.c
source/blender/editors/space_view3d/view3d_buttons.c
source/blender/editors/space_view3d/view3d_draw.c
source/blender/editors/space_view3d/view3d_edit.c
source/blender/editors/space_view3d/view3d_view.c
source/blender/editors/transform/transform.c
source/blender/editors/transform/transform.h
source/blender/editors/transform/transform_constraints.c
source/blender/editors/transform/transform_conversions.c
source/blender/editors/transform/transform_generics.c
source/blender/editors/transform/transform_orientations.c
source/blender/editors/uvedit/uvedit_unwrap_ops.c
source/blender/gpu/GPU_draw.h
source/blender/gpu/intern/gpu_codegen.c
source/blender/gpu/intern/gpu_draw.c
source/blender/imbuf/CMakeLists.txt
source/blender/imbuf/IMB_imbuf.h
source/blender/imbuf/IMB_imbuf_types.h
source/blender/imbuf/IMB_thumbs.h
source/blender/imbuf/SConscript
source/blender/imbuf/intern/IMB_amiga.h [deleted file]
source/blender/imbuf/intern/IMB_anim.h
source/blender/imbuf/intern/IMB_anim5.h [deleted file]
source/blender/imbuf/intern/IMB_bitplanes.h [deleted file]
source/blender/imbuf/intern/IMB_bmp.h [deleted file]
source/blender/imbuf/intern/IMB_cmap.h [deleted file]
source/blender/imbuf/intern/IMB_cocoa.h [deleted file]
source/blender/imbuf/intern/IMB_divers.h [deleted file]
source/blender/imbuf/intern/IMB_dpxcineon.h [deleted file]
source/blender/imbuf/intern/IMB_filetype.h [new file with mode: 0644]
source/blender/imbuf/intern/IMB_filter.h
source/blender/imbuf/intern/IMB_hamx.h [deleted file]
source/blender/imbuf/intern/IMB_iff.h [deleted file]
source/blender/imbuf/intern/IMB_iris.h [deleted file]
source/blender/imbuf/intern/IMB_jp2.h [deleted file]
source/blender/imbuf/intern/IMB_jpeg.h [deleted file]
source/blender/imbuf/intern/IMB_metadata.h [moved from source/blender/imbuf/intern/IMB_imginfo.h with 78% similarity]
source/blender/imbuf/intern/IMB_png.h [deleted file]
source/blender/imbuf/intern/IMB_radiance_hdr.h [deleted file]
source/blender/imbuf/intern/IMB_targa.h [deleted file]
source/blender/imbuf/intern/IMB_tiff.h [deleted file]
source/blender/imbuf/intern/Makefile
source/blender/imbuf/intern/allocimbuf.c
source/blender/imbuf/intern/amiga.c [deleted file]
source/blender/imbuf/intern/anim.c
source/blender/imbuf/intern/anim5.c [deleted file]
source/blender/imbuf/intern/antialias.c [deleted file]
source/blender/imbuf/intern/bitplanes.c [deleted file]
source/blender/imbuf/intern/bmp.c
source/blender/imbuf/intern/cache.c [new file with mode: 0644]
source/blender/imbuf/intern/cineon/cineon_dpx.c
source/blender/imbuf/intern/cmap.c [deleted file]
source/blender/imbuf/intern/cspace.c [deleted file]
source/blender/imbuf/intern/data.c [deleted file]
source/blender/imbuf/intern/dds/dds_api.cpp
source/blender/imbuf/intern/dds/dds_api.h
source/blender/imbuf/intern/dither.c [deleted file]
source/blender/imbuf/intern/divers.c
source/blender/imbuf/intern/dynlibtiff.c [deleted file]
source/blender/imbuf/intern/dynlibtiff.h [deleted file]
source/blender/imbuf/intern/filetype.c [new file with mode: 0644]
source/blender/imbuf/intern/filter.c
source/blender/imbuf/intern/gen_dynlibtiff.py [deleted file]
source/blender/imbuf/intern/ham.c [deleted file]
source/blender/imbuf/intern/hamx.c [deleted file]
source/blender/imbuf/intern/iff.c [deleted file]
source/blender/imbuf/intern/imageprocess.c
source/blender/imbuf/intern/imbuf.h
source/blender/imbuf/intern/imbuf_cocoa.m
source/blender/imbuf/intern/imbuf_patch.h [deleted file]
source/blender/imbuf/intern/iris.c
source/blender/imbuf/intern/jp2.c
source/blender/imbuf/intern/jpeg.c
source/blender/imbuf/intern/matrix.h [deleted file]
source/blender/imbuf/intern/metadata.c [moved from source/blender/imbuf/intern/imginfo.c with 67% similarity]
source/blender/imbuf/intern/module.c [moved from source/blender/imbuf/intern/IMB_ham.h with 68% similarity]
source/blender/imbuf/intern/openexr/openexr_api.cpp
source/blender/imbuf/intern/openexr/openexr_api.h
source/blender/imbuf/intern/png.c
source/blender/imbuf/intern/radiance_hdr.c
source/blender/imbuf/intern/readimage.c
source/blender/imbuf/intern/rectop.c
source/blender/imbuf/intern/rotate.c
source/blender/imbuf/intern/scaling.c
source/blender/imbuf/intern/targa.c
source/blender/imbuf/intern/thumbs.c
source/blender/imbuf/intern/thumbs_blend.c [new file with mode: 0644]
source/blender/imbuf/intern/tiff.c
source/blender/imbuf/intern/util.c
source/blender/imbuf/intern/writeimage.c
source/blender/makesdna/DNA_action_types.h
source/blender/makesdna/DNA_actuator_types.h
source/blender/makesdna/DNA_color_types.h
source/blender/makesdna/DNA_controller_types.h
source/blender/makesdna/DNA_image_types.h
source/blender/makesdna/DNA_modifier_types.h
source/blender/makesdna/DNA_object_force.h
source/blender/makesdna/DNA_object_types.h
source/blender/makesdna/DNA_scene_types.h
source/blender/makesdna/DNA_sensor_types.h
source/blender/makesdna/DNA_space_types.h
source/blender/makesdna/DNA_userdef_types.h
source/blender/makesrna/RNA_access.h
source/blender/makesrna/RNA_define.h
source/blender/makesrna/RNA_enum_types.h
source/blender/makesrna/RNA_types.h
source/blender/makesrna/SConscript
source/blender/makesrna/intern/CMakeLists.txt
source/blender/makesrna/intern/Makefile
source/blender/makesrna/intern/rna_access.c
source/blender/makesrna/intern/rna_action.c
source/blender/makesrna/intern/rna_actuator.c
source/blender/makesrna/intern/rna_animation.c
source/blender/makesrna/intern/rna_animviz.c
source/blender/makesrna/intern/rna_armature.c
source/blender/makesrna/intern/rna_boid.c
source/blender/makesrna/intern/rna_color.c
source/blender/makesrna/intern/rna_constraint.c
source/blender/makesrna/intern/rna_controller.c
source/blender/makesrna/intern/rna_curve.c
source/blender/makesrna/intern/rna_define.c
source/blender/makesrna/intern/rna_fcurve.c
source/blender/makesrna/intern/rna_fluidsim.c
source/blender/makesrna/intern/rna_image.c
source/blender/makesrna/intern/rna_internal.h
source/blender/makesrna/intern/rna_lamp.c
source/blender/makesrna/intern/rna_main.c
source/blender/makesrna/intern/rna_main_api.c
source/blender/makesrna/intern/rna_material.c
source/blender/makesrna/intern/rna_mesh.c
source/blender/makesrna/intern/rna_meta.c
source/blender/makesrna/intern/rna_modifier.c
source/blender/makesrna/intern/rna_object.c
source/blender/makesrna/intern/rna_object_api.c
source/blender/makesrna/intern/rna_object_force.c
source/blender/makesrna/intern/rna_particle.c
source/blender/makesrna/intern/rna_pose.c
source/blender/makesrna/intern/rna_property.c
source/blender/makesrna/intern/rna_rna.c
source/blender/makesrna/intern/rna_scene.c
source/blender/makesrna/intern/rna_sculpt_paint.c
source/blender/makesrna/intern/rna_sensor.c
source/blender/makesrna/intern/rna_sequencer.c
source/blender/makesrna/intern/rna_smoke.c
source/blender/makesrna/intern/rna_space.c
source/blender/makesrna/intern/rna_texture.c
source/blender/makesrna/intern/rna_userdef.c
source/blender/makesrna/intern/rna_world.c
source/blender/modifiers/intern/MOD_boolean_util.c
source/blender/modifiers/intern/MOD_build.c
source/blender/modifiers/intern/MOD_cloth.c
source/blender/modifiers/intern/MOD_mask.c
source/blender/modifiers/intern/MOD_simpledeform.c
source/blender/modifiers/intern/MOD_smoke.c
source/blender/modifiers/intern/MOD_util.c
source/blender/python/doc/sphinx_doc_gen.py
source/blender/python/doc/sphinx_doc_gen.sh
source/blender/python/generic/bgl.c
source/blender/python/generic/blf_api.c
source/blender/python/generic/mathutils_color.c
source/blender/python/generic/mathutils_euler.c
source/blender/python/generic/mathutils_matrix.c
source/blender/python/generic/mathutils_quat.c
source/blender/python/generic/mathutils_vector.c
source/blender/python/intern/bpy.c
source/blender/python/intern/bpy_app.c
source/blender/python/intern/bpy_driver.c
source/blender/python/intern/bpy_props.c
source/blender/python/intern/bpy_props.h
source/blender/python/intern/bpy_rna.c
source/blender/quicktime/apple/qtkit_import.m
source/blender/quicktime/apple/quicktime_import.c
source/blender/render/intern/raytrace/rayobject_rtbuild.cpp
source/blender/render/intern/source/convertblender.c
source/blender/render/intern/source/pipeline.c
source/blender/render/intern/source/rendercore.c
source/blender/render/intern/source/sss.c
source/blender/render/intern/source/strand.c
source/blender/render/intern/source/texture.c
source/blender/windowmanager/intern/wm_files.c
source/blender/windowmanager/intern/wm_init_exit.c
source/blender/windowmanager/intern/wm_operators.c
source/blender/windowmanager/intern/wm_window.c
source/blender/windowmanager/wm_event_types.h
source/blenderplayer/CMakeLists.txt
source/blenderplayer/bad_level_call_stubs/stubs.c
source/creator/CMakeLists.txt
source/creator/Makefile
source/creator/SConscript
source/creator/creator.c
source/gameengine/Converter/BL_ArmatureObject.cpp
source/gameengine/Converter/BL_BlenderDataConversion.cpp
source/gameengine/Converter/BL_ModifierDeformer.cpp
source/gameengine/Converter/BL_ModifierDeformer.h
source/gameengine/Expressions/ListValue.cpp
source/gameengine/GamePlayer/ghost/GPG_Application.cpp
source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
source/gameengine/Ketsji/KX_GameObject.cpp
source/gameengine/Ketsji/KX_ObjectActuator.cpp
source/gameengine/Ketsji/KX_PythonInit.cpp
source/gameengine/Ketsji/KX_PythonInit.h
source/gameengine/Ketsji/KX_PythonSeq.cpp
source/gameengine/Ketsji/KX_Scene.cpp
source/gameengine/PyDoc/GameKeys.py [deleted file]
source/gameengine/PyDoc/GameLogic.py [deleted file]
source/gameengine/PyDoc/GameTypes.py [deleted file]
source/gameengine/PyDoc/Rasterizer.py [deleted file]
source/gameengine/PyDoc/bge.events.rst [new file with mode: 0644]
source/gameengine/PyDoc/bge.logic.rst [new file with mode: 0644]
source/gameengine/PyDoc/bge.render.rst [new file with mode: 0644]
source/gameengine/PyDoc/bge.types.rst [new file with mode: 0644]
source/nan_definitions.mk
source/nan_link.mk
tools/Blender.py
tools/btools.py
tools/crossmingw.py

index 73458d7312e80cb595d304970dfc0a2d631d6651..54b14dbd5ce4e0efff485b2d097ea101fd8b8737 100644 (file)
@@ -61,6 +61,9 @@ MACRO(SETUP_LIBDIRS)
   IF(WITH_OPENEXR)
     LINK_DIRECTORIES(${OPENEXR_LIBPATH})
   ENDIF(WITH_OPENEXR)
+  IF(WITH_TIFF)
+    LINK_DIRECTORIES(${TIFF_LIBPATH})
+  ENDIF(WITH_TIFF)
   IF(WITH_QUICKTIME)
     LINK_DIRECTORIES(${QUICKTIME_LIBPATH})
   ENDIF(WITH_QUICKTIME)
@@ -134,6 +137,9 @@ MACRO(SETUP_LIBLINKS
   IF(WITH_QUICKTIME)
     TARGET_LINK_LIBRARIES(${target} ${QUICKTIME_LIB})
   ENDIF(WITH_QUICKTIME)
+  IF(WITH_TIFF)
+    TARGET_LINK_LIBRARIES(${target} ${TIFF_LIBRARY})
+  ENDIF(WITH_TIFF)
   IF(WITH_OPENEXR)
     IF(WIN32)
       FOREACH(loop_var ${OPENEXR_LIB})
index 71489ca69122134a5cb613a3abb69faaf37dade0..19d1bdc94051b56781ffd47545c016620fb918af 100644 (file)
@@ -62,8 +62,8 @@ OPTION(WITH_GAMEENGINE    "Enable Game Engine" ON)
 OPTION(WITH_BULLET        "Enable Bullet (Physics Engine)" ON)
 OPTION(WITH_INTERNATIONAL "Enable I18N   (International fonts and text)" ON)
 OPTION(WITH_ELBEEM        "Enable Elbeem (Fluid Simulation)" ON)
-OPTION(WITH_QUICKTIME     "Enable Quicktime Support" OFF)
 OPTION(WITH_OPENEXR       "Enable OpenEXR Support (http://www.openexr.com)" ON)
+OPTION(WITH_TIFF          "Enable LibTIFF Support" ON)
 OPTION(WITH_DDS           "Enable DDS Support" ON)
 OPTION(WITH_FFMPEG        "Enable FFMPeg Support (http://ffmpeg.mplayerhq.hu/)" OFF)
 OPTION(WITH_PYTHON        "Enable Embedded Python API" ON)
@@ -79,17 +79,22 @@ OPTION(WITH_LZMA          "Enable best LZMA compression, used for pointcache" ON
 OPTION(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation" OFF)
 OPTION(WITH_BUILDINFO     "Include extra build details" ON)
 OPTION(WITH_INSTALL       "Install accompanying scripts and language files needed to run blender" ON)
-OPTION(WITH_OPENCOLLADA                "Enable OpenCollada Support (http://www.opencollada.org/)"      ON)
+OPTION(WITH_RAYOPTIMIZATION    "Enable use of SIMD (SSE) optimizations for the raytracer" OFF) 
+
+IF(APPLE OR WIN32)
+       OPTION(WITH_QUICKTIME     "Enable Quicktime Support" OFF)
+ENDIF(APPLE OR WIN32)
 
 # Unix defaults to OpenMP On
+# Disable opencollada on non-apple unix because opencollada has no package for debian
 IF(UNIX AND NOT APPLE)
        OPTION(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" ON)
+       OPTION(WITH_OPENCOLLADA         "Enable OpenCollada Support (http://www.opencollada.org/)"      OFF)
 ELSE()
        OPTION(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" OFF)
+       OPTION(WITH_OPENCOLLADA         "Enable OpenCollada Support (http://www.opencollada.org/)"      ON)
 ENDIF()
 
-OPTION(WITH_RAYOPTIMIZATION    "Enable use of SIMD (SSE) optimizations for the raytracer" OFF) 
-
 IF (APPLE)
        OPTION(WITH_COCOA         "Use Cocoa framework instead of deprecated Carbon" ON)
        OPTION(USE_QTKIT          "Use QtKit instead of Carbon quicktime (needed for having partial quicktime for 64bit)" OFF)
@@ -120,11 +125,9 @@ IF(UNIX AND NOT APPLE)
 
        IF(WITH_OPENAL)
                FIND_PACKAGE(OpenAL)
-               IF(OPENAL_FOUND)
-                       SET(WITH_OPENAL ON)
-               ELSE(OPENAL_FOUND)
+               IF(NOT OPENAL_FOUND)
                        SET(WITH_OPENAL OFF)
-               ENDIF(OPENAL_FOUND)
+               ENDIF(NOT OPENAL_FOUND)
        ENDIF(WITH_OPENAL)
 
        IF(WITH_JACK)
@@ -181,11 +184,11 @@ IF(UNIX AND NOT APPLE)
                ENDIF(NOT SDL_FOUND)
        ENDIF(WITH_SDL)
 
-    SET(OPENEXR /usr CACHE FILEPATH "OPENEXR Directory")
+       SET(OPENEXR /usr CACHE FILEPATH "OPENEXR Directory")
        FIND_PATH(OPENEXR_INC
                ImfXdr.h
                PATHS
-        ${OPENEXR}/include/OpenEXR
+               ${OPENEXR}/include/OpenEXR
                /usr/local/include/OpenEXR
                /sw/include/OpenEXR
                /opt/local/include/OpenEXR
@@ -211,6 +214,13 @@ IF(UNIX AND NOT APPLE)
        SET(LIBSAMPLERATE_LIB samplerate)
        SET(LIBSAMPLERATE_LIBPATH ${LIBSAMPLERATE}/lib)
 
+       IF(WITH_TIFF)
+               FIND_PACKAGE(TIFF)
+               IF(NOT TIFF_FOUND)
+                       SET(WITH_TIFF OFF)
+               ENDIF(NOT TIFF_FOUND)
+       ENDIF(WITH_TIFF)
+
        FIND_PACKAGE(JPEG REQUIRED)
 
        FIND_PACKAGE(PNG REQUIRED)
@@ -405,7 +415,9 @@ IF(WIN32)
        SET(JPEG_LIBPATH ${JPEG}/lib)
 
        SET(TIFF ${LIBDIR}/tiff)
-       SET(TIFF_INC ${TIFF}/include)
+       SET(TIFF_INCLUDE_DIR ${TIFF}/include)
+       SET(TIFF_LIBRARY tiff)
+       SET(TIFF_LIBPATH ${TIFF}/lib)
   
        SET(WINTAB_INC ${LIBDIR}/wintab/include) 
 
@@ -474,7 +486,7 @@ IF(APPLE)
                # SET(PYTHON_BINARY "${PYTHON}/bin/python${PYTHON_VERSION}") # not used yet
                SET(PYTHON_LIB python${PYTHON_VERSION})
                SET(PYTHON_LIBPATH "${PYTHON}/lib/python${PYTHON_VERSION}")
-               #    SET(PYTHON_LINKFLAGS "-u _PyMac_Error")  # won't  build with this enabled
+               # SET(PYTHON_LINKFLAGS "-u _PyMac_Error")  # won't  build with this enabled
        ELSE(PYTHON_VERSION MATCHES 3.1)
                # otherwise, use custom system framework
 
@@ -581,7 +593,9 @@ IF(APPLE)
        SET(JPEG_LIBPATH ${JPEG}/lib)
 
        SET(TIFF ${LIBDIR}/tiff)
-       SET(TIFF_INC ${TIFF}/include)
+       SET(TIFF_INCLUDE_DIR ${TIFF}/include)
+       SET(TIFF_LIBRARY tiff)
+       SET(TIFF_LIBPATH ${TIFF}/lib)
 
        SET(EXETYPE MACOSX_BUNDLE)
 
index 30d8788f040936311e892937c4da87d9a4187c15..ffcfdc10436d45bf955b36e64ff0ffdd1f086b37 100644 (file)
@@ -182,7 +182,7 @@ if os.path.exists(userconfig):
 else:
        print B.bc.WARNING + userconfig + " not found, no user overrides" + B.bc.ENDC
 
-opts = btools.read_opts(optfiles, B.arguments)
+opts = btools.read_opts(env, optfiles, B.arguments)
 opts.Update(env)
 
 if not env['BF_FANCY']:
@@ -572,7 +572,9 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'):
                dllsources += ['${BF_PNG_LIBPATH}/libpng.dll',
                                '${BF_ZLIB_LIBPATH}/zlib.dll']
 
-       dllsources += ['${BF_TIFF_LIBPATH}/${BF_TIFF_LIB}.dll']
+       # Used when linking to libtiff was dynamic
+       # keep it here until compilation on all platform would be ok
+       # dllsources += ['${BF_TIFF_LIBPATH}/${BF_TIFF_LIB}.dll']
 
        if env['OURPLATFORM'] != 'linuxcross':
                # pthreads library is already added
index bac4c9ab165a4a14267621025b5d3bd5ed5010a6..2c3d0a7e87e93909be80fb4f0d4e6892e94be46c 100644 (file)
@@ -163,8 +163,11 @@ BF_PNG_INC = '${BF_PNG}/include'
 BF_PNG_LIB = 'png'
 BF_PNG_LIBPATH = '${BF_PNG}/lib'
 
+WITH_BF_TIFF = True
 BF_TIFF = LIBDIR + '/tiff'
 BF_TIFF_INC = '${BF_TIFF}/include'
+BF_TIFF_LIB = 'tiff'
+BF_TIFF_LIBPATH = '${BF_TIFF}/lib'
 
 WITH_BF_ZLIB = True
 BF_ZLIB = '/usr'
index 3951dac2454fdfddcb11b3791c0230a7e46a5dfc..199ea391d4e5b409ccb4d659eafb3590a20d4d46 100644 (file)
@@ -68,8 +68,10 @@ BF_PNG = '/usr'
 BF_PNG_INC = '${BF_PNG}/include'
 BF_PNG_LIB = 'png'
 
+WITH_BF_TIFF = True
 BF_TIFF = '/usr'
 BF_TIFF_INC = '${BF_TIFF}/include'
+BF_TIFF_LIB = 'tiff'
 
 WITH_BF_ZLIB = True
 BF_ZLIB = '/usr'
index fe5e954f3bcc00d5daae6661047704eb4f397509..2fb1a4a39d680f49ec7f47c1d0b75c36734b70c3 100644 (file)
@@ -75,9 +75,9 @@ BF_PNG_LIB = 'png'
 BF_PNG_LIBPATH = '${BF_PNG}/lib'
 
 WITH_BF_TIFF = True
-BF_TIFF = LIBDIR + '/tiff'
+BF_TIFF = LIBDIR + '/gcc/tiff'
 BF_TIFF_INC = '${BF_TIFF}/include'
-BF_TIFF_LIB = 'libtiff'
+BF_TIFF_LIB = 'tiff'
 BF_TIFF_LIBPATH = '${BF_TIFF}/lib'
 
 WITH_BF_ZLIB = True
@@ -174,9 +174,6 @@ BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib ${BF_ICONV_LIBPATH}'
 WITH_BF_RAYOPTIMIZATION = False
 BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse']
 
-CC = 'i586-mingw32msvc-gcc'
-CXX = 'i586-mingw32msvc-g++'
-
 CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ]
 
 CPPFLAGS = ['-DWIN32', '-DFREE_WINDOWS']
index 9088db5a5d8493422bdbe9b6dbf3860a0a5a07d9..491652ab13300200fda14f99587d91ae7257a844 100644 (file)
@@ -73,9 +73,10 @@ BF_PNG_INC = '${BF_PNG}/include'
 BF_PNG_LIB = 'png'
 BF_PNG_LIBPATH = '${BF_PNG}/lib'
 
-BF_TIFF = LIBDIR + '/tiff'
+WITH_BF_TIFF = True
+BF_TIFF = LIBDIR + '/gcc/tiff'
 BF_TIFF_INC = '${BF_TIFF}/include'
-BF_TIFF_LIB = 'libtiff'
+BF_TIFF_LIB = 'tiff'
 BF_TIFF_LIBPATH = '${BF_TIFF}/lib'
 
 WITH_BF_ZLIB = True
index 3e8dfc3d5dfbbe2ae374d76248d9373a8d50d3a4..b3766247d2de9797d7ed8cd89ce54f46859ac178 100644 (file)
@@ -79,6 +79,7 @@ BF_PNG_INC = '${BF_PNG}/include'
 BF_PNG_LIB = 'libpng_st'
 BF_PNG_LIBPATH = '${BF_PNG}/lib'
 
+WITH_BF_TIFF = True
 BF_TIFF = LIBDIR + '/tiff'
 BF_TIFF_INC = '${BF_TIFF}/include'
 BF_TIFF_LIB = 'libtiff'
index 41772dea14b5c6de76e0f363be0a6d196ed64b9f..c1cbb7cfee8384bb68dd1a7d7eedfaa24a96c356 100644 (file)
@@ -75,6 +75,7 @@ BF_PNG_INC = '${BF_PNG}/include'
 BF_PNG_LIB = 'libpng'
 BF_PNG_LIBPATH = '${BF_PNG}/lib'
 
+WITH_BF_TIFF = True
 BF_TIFF = LIBDIR + '/tiff'
 BF_TIFF_INC = '${BF_TIFF}/include'
 BF_TIFF_LIB = 'libtiff'
index f67c819ff1016089f8fbd6b496b5d577a4813948..8e71c97baec891829df9d24bcb333d8ea730f14c 100644 (file)
@@ -23,6 +23,9 @@
  * ***** END LGPL LICENSE BLOCK *****
  */
 
+// needed for INT64_C
+#define __STDC_CONSTANT_MACROS
+
 #include "AUD_FFMPEGFactory.h"
 #include "AUD_FFMPEGReader.h"
 #include "AUD_Buffer.h"
index 32cfd2098b0c5be8c165d28295eba2d881ce1008..8740f62c9a79a45fbb447b74a2a5d9dfbb6947fe 100644 (file)
 #include <cstring>
 #include <cmath>
 
+#ifdef WITH_FFMPEG
+// needed for INT64_C
+#define __STDC_CONSTANT_MACROS
+#endif
+
 #include "AUD_NULLDevice.h"
 #include "AUD_I3DDevice.h"
 #include "AUD_FileFactory.h"
@@ -62,6 +67,7 @@
 #include "AUD_JackDevice.h"
 #endif
 
+
 #ifdef WITH_FFMPEG
 extern "C" {
 #include <libavformat/avformat.h>
index b63390803b193f7ffd6b98dcf9a03d7198095829..5888479a0bad4b8effc86ed2b06c5a903181e760 100644 (file)
@@ -29,6 +29,9 @@
 #include <cstring>
 
 #ifdef WITH_FFMPEG
+// needed for INT64_C
+#define __STDC_CONSTANT_MACROS
+
 #include "AUD_FFMPEGReader.h"
 #endif
 #ifdef WITH_SNDFILE
index ba62bcb8e4b36a50e193fa9a189c177fabe87809..fa630ce26f0a3a9aad4b14a46a2ce567ee7a4f98 100644 (file)
 #
 # ***** END GPL LICENSE BLOCK *****
 
-SET(INC . ../string ../../extern/glew/include ../../source/blender/imbuf ../../source/blender/makesdna)
+SET(INC
+       .
+       ../string
+       ../../extern/glew/include
+       ../../source/blender/imbuf
+       ../../source/blender/makesdna
+)
 
-FILE(GLOB SRC intern/*.cpp intern/*.mm)
+SET(SRC
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_Buttons.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_CallbackEventConsumer.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_C-api.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManager.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_EventManager.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_EventPrinter.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_ISystem.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_ModifierKeys.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_NDOFManager.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_Rect.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_System.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_TimerManager.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_Window.cpp
+       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowManager.cpp
+)
 
 IF(APPLE)
        IF(WITH_COCOA)
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerCarbon.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemCarbon.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowCarbon.cpp")
+               SET(SRC ${SRC}
+                       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerCocoa.mm
+                       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemCocoa.mm
+                       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowCocoa.mm
+               )
        ELSE(WITH_COCOA)
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerCocoa.mm")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemCocoa.mm")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowCocoa.mm")
+               SET(SRC ${SRC}
+                       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerCarbon.cpp
+                       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemCarbon.cpp
+                       ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowCarbon.cpp
+               )
        ENDIF(WITH_COCOA)
-       LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerWin32.cpp")
-       LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemWin32.cpp")
-       LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowWin32.cpp")
-       LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DropTargetWin32.cpp")
-       LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerX11.cpp")
-       LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemX11.cpp")
-       LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowX11.cpp")
 
        IF(WITH_QUICKTIME)
                ADD_DEFINITIONS(-DWITH_QUICKTIME)
        ENDIF(WITH_QUICKTIME)
-ELSE(APPLE)
-       IF(WIN32)
-               SET(INC ${INC} ${WINTAB_INC})
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerCarbon.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemCarbon.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowCarbon.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerCocoa.mm")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemCocoa.mm")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowCocoa.mm")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerX11.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemX11.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowX11.cpp")
-       ELSE(WIN32)
-               SET(INC ${INC} ${X11_X11_INCLUDE_PATH})
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerWin32.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DropTargetWin32.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemWin32.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowWin32.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerCarbon.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemCarbon.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowCarbon.cpp")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerCocoa.mm")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemCocoa.mm")
-               LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowCocoa.mm")
-       ENDIF(WIN32)
+ELSEIF(WIN32)
+       SET(INC ${INC} ${WINTAB_INC})
+
+       SET(SRC ${SRC}
+               ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerWin32.cpp
+               ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemWin32.cpp
+               ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowWin32.cpp
+               ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DropTargetWin32.cpp
+       )
+ELSEIF(UNIX)
+       SET(INC ${INC} ${X11_X11_INCLUDE_PATH})
+
+       SET(SRC ${SRC}
+               ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_DisplayManagerX11.cpp
+               ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_SystemX11.cpp
+               ${CMAKE_CURRENT_SOURCE_DIR}/intern/GHOST_WindowX11.cpp
+       )
 ENDIF(APPLE)
 
 BLENDERLIB(bf_ghost "${SRC}" "${INC}")
-#, libtype=['core','player'], priority = [25,15] ) 
+
index c2185ae9b23b3025a7f32429ef79ed166daa1b38..6470b40649250cbb4c1d5cce7d487d5467105cdb 100644 (file)
@@ -110,8 +110,8 @@ ULONG __stdcall GHOST_DropTargetWin32::Release(void)
  */
 HRESULT __stdcall GHOST_DropTargetWin32::DragEnter(IDataObject * pDataObject, DWORD grfKeyState, POINTL pt, DWORD * pdwEffect)
 {
-       // we don't know yet if we accept the drop.
-       m_window->setAcceptDragOperation(false);
+       // we accept all drop by default
+       m_window->setAcceptDragOperation(true);
        *pdwEffect = DROPEFFECT_NONE;
        
        m_draggedObjectType = getGhostType(pDataObject);
index eb89258e1dd208d62230a59d05646914c9d748fb..2cec24714be82b1383fae0f0aa1356f7b3f4d4ac 100644 (file)
@@ -1106,7 +1106,7 @@ GHOST_TSuccess GHOST_SystemCocoa::handleDraggingEvent(GHOST_TEventType eventType
                                        {
                                                droppedStr = [droppedArray objectAtIndex:i];
                                                
-                                               pastedTextSize = [droppedStr lengthOfBytesUsingEncoding:NSISOLatin1StringEncoding];
+                                               pastedTextSize = [droppedStr lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
                                                temp_buff = (GHOST_TUns8*) malloc(pastedTextSize+1); 
                                        
                                                if (!temp_buff) {
@@ -1114,7 +1114,7 @@ GHOST_TSuccess GHOST_SystemCocoa::handleDraggingEvent(GHOST_TEventType eventType
                                                        break;
                                                }
                                        
-                                               strncpy((char*)temp_buff, [droppedStr cStringUsingEncoding:NSISOLatin1StringEncoding], pastedTextSize);
+                                               strncpy((char*)temp_buff, [droppedStr cStringUsingEncoding:NSUTF8StringEncoding], pastedTextSize);
                                                temp_buff[pastedTextSize] = '\0';
                                                
                                                strArray->strings[i] = temp_buff;
@@ -1125,7 +1125,7 @@ GHOST_TSuccess GHOST_SystemCocoa::handleDraggingEvent(GHOST_TEventType eventType
                                        
                                case GHOST_kDragnDropTypeString:
                                        droppedStr = (NSString*)data;
-                                       pastedTextSize = [droppedStr lengthOfBytesUsingEncoding:NSISOLatin1StringEncoding];
+                                       pastedTextSize = [droppedStr lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
                                        
                                        temp_buff = (GHOST_TUns8*) malloc(pastedTextSize+1); 
                                        
@@ -1133,7 +1133,7 @@ GHOST_TSuccess GHOST_SystemCocoa::handleDraggingEvent(GHOST_TEventType eventType
                                                return GHOST_kFailure;
                                        }
                                        
-                                       strncpy((char*)temp_buff, [droppedStr cStringUsingEncoding:NSISOLatin1StringEncoding], pastedTextSize);
+                                       strncpy((char*)temp_buff, [droppedStr cStringUsingEncoding:NSUTF8StringEncoding], pastedTextSize);
                                        
                                        temp_buff[pastedTextSize] = '\0';
                                        
index 7520375c10e1909c1af863b07f635202fbb29be4..6dc2fa5a745948b2dc2f9cc49aa16b727347c142 100644 (file)
@@ -167,7 +167,7 @@ extern "C" {
        else if ([[draggingPBoard types] containsObject:NSStringPboardType]) m_draggedObjectType = GHOST_kDragnDropTypeString;
        else return NSDragOperationNone;
        
-       associatedWindow->setAcceptDragOperation(FALSE); //Drag operation needs to be accepted explicitly by the event manager
+       associatedWindow->setAcceptDragOperation(TRUE); //Drag operation is accepted by default
        systemCocoa->handleDraggingEvent(GHOST_kEventDraggingEntered, m_draggedObjectType, associatedWindow, mouseLocation.x, mouseLocation.y, nil);
        return NSDragOperationCopy;
 }
index 705f099ab63a70e0c927509f3b3451f0123c2224..c51e96f04b51e29c2fd4189e6c3b7dace542b1a8 100644 (file)
@@ -144,6 +144,12 @@ extern "C" {
        uintptr_t MEM_get_mapped_memory_in_use(void);
        int MEM_get_memory_blocks_in_use(void);
 
+       /*reset the peak memory statistic to zero*/
+       void MEM_reset_peak_memory(void);
+
+       /*get the peak memory usage in bytes, including mmap allocations*/
+       uintptr_t MEM_get_peak_memory(void);
+
 #ifdef __cplusplus
 }
 #endif
index 9f2f57e119c3e3529e350e219a4e947c02e6e874..09f2d33a674dee1a7402f56063a3fb620702e553 100644 (file)
@@ -138,7 +138,7 @@ static const char *check_memlist(MemHead *memh);
        
 
 static volatile int totblock= 0;
-static volatile uintptr_t mem_in_use= 0, mmap_in_use= 0;
+static volatile uintptr_t mem_in_use= 0, mmap_in_use= 0, peak_mem = 0;
 
 static volatile struct localListBase _membase;
 static volatile struct localListBase *membase = &_membase;
@@ -293,6 +293,8 @@ static void make_memhead_header(MemHead *memh, size_t len, const char *str)
        
        totblock++;
        mem_in_use += len;
+
+       peak_mem = mem_in_use > peak_mem ? mem_in_use : peak_mem;
 }
 
 void *MEM_mallocN(size_t len, const char *str)
@@ -377,6 +379,7 @@ void *MEM_mapallocN(size_t len, const char *str)
                make_memhead_header(memh, len, str);
                memh->mmap= 1;
                mmap_in_use += len;
+               peak_mem = mmap_in_use > peak_mem ? mmap_in_use : peak_mem;
                mem_unlock_thread();
 #ifdef DEBUG_MEMCOUNTER
                if(_mallocn_count==DEBUG_MEMCOUNTER_ERROR_VAL)
@@ -802,6 +805,24 @@ static const char *check_memlist(MemHead *memh)
        return(name);
 }
 
+uintptr_t MEM_get_peak_memory(void)
+{
+       uintptr_t _peak_mem;
+
+       mem_lock_thread();
+       _peak_mem = peak_mem;
+       mem_unlock_thread();
+
+       return _peak_mem;
+}
+
+void MEM_reset_peak_memory(void)
+{
+       mem_lock_thread();
+       peak_mem = 0;
+       mem_unlock_thread();
+}
+
 uintptr_t MEM_get_memory_in_use(void)
 {
        uintptr_t _mem_in_use;
index 26bbab731548b1140b749293540f735a0017104f..97a950fb8ce7264c4dbc3a56e781208578bc13dd 100644 (file)
@@ -43,7 +43,7 @@
                        <Tool\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
+                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
                                PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_QUICKTIME;WITH_OPENEXR;WITH_DDS;WITH_FFMPEG"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="1"\r
                        <Tool\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
+                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
                                PreprocessorDefinitions="_DEBUG,WIN32,_LIB"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="3"\r
                        <Tool\r
                                Name="VCCLCompilerTool"\r
                                InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
+                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
                                PreprocessorDefinitions="NDEBUG,WIN32,_LIB,WITH_QUICKTIME"\r
                                StringPooling="true"\r
                                RuntimeLibrary="2"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="2"\r
                                InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
+                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
                                PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_QUICKTIME;WITH_OPENEXR;WITH_DDS;WITH_FFMPEG"\r
                                StringPooling="true"\r
                                RuntimeLibrary="0"\r
                        <Tool\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
+                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
                                PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_QUICKTIME;WITH_DDS;WITH_FFMPEG"\r
                                BasicRuntimeChecks="3"\r
                                RuntimeLibrary="1"\r
                        <Tool\r
                                Name="VCCLCompilerTool"\r
                                InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
+                               AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesrna"\r
                                PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_QUICKTIME;WITH_DDS;WITH_FFMPEG"\r
                                StringPooling="true"\r
                                RuntimeLibrary="0"\r
                                RelativePath="..\..\..\source\blender\imbuf\intern\allocimbuf.c"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\amiga.c"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath="..\..\..\source\blender\imbuf\intern\anim.c"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\anim5.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\antialias.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\bitplanes.c"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath="..\..\..\source\blender\imbuf\intern\bmp.c"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\cmap.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\cspace.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\data.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\dither.c"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\cache.c"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\dynlibtiff.c"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\filetype.c"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\ham.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\hamx.c"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\iff.c"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\imageprocess.c"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\imageprocess.c"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\iris.c"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\imginfo.c"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\jp2.c"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\iris.c"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\jpeg.c"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\jp2.c"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\md5.c"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\jpeg.c"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\metadata.c"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\md5.c"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\module.c"\r
                                >\r
                        </File>\r
                        <File\r
                        Name="Header Files"\r
                        Filter="h;hpp;hxx;hm;inl"\r
                        >\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\dynlibtiff.h"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath="..\..\..\source\blender\imbuf\intern\IMB_allocimbuf.h"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_amiga.h"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath="..\..\..\source\blender\imbuf\intern\IMB_anim.h"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_anim5.h"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath="..\..\..\source\blender\imbuf\intern\IMB_bitplanes.h"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_bmp.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_cmap.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_divers.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_dpxcineon.h"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_filetype.h"\r
                                >\r
                        </File>\r
                        <File\r
                                RelativePath="..\..\..\source\blender\imbuf\intern\IMB_filter.h"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_ham.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_hamx.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_iff.h"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath="..\..\..\source\blender\imbuf\IMB_imbuf.h"\r
                                >\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_imginfo.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_iris.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_jp2.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_jpeg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_png.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_radiance_hdr.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_targa.h"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_metadata.h"\r
                                >\r
                        </File>\r
                        <File\r
                                RelativePath="..\..\..\source\blender\imbuf\IMB_thumbs.h"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\IMB_tiff.h"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath="..\..\..\source\blender\imbuf\intern\imbuf.h"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\imbuf_patch.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\source\blender\imbuf\intern\matrix.h"\r
+                               RelativePath="..\..\..\source\blender\imbuf\intern\md5.h"\r
                                >\r
                        </File>\r
                        <File\r
index d53a7b8ec511141af92d68a55faffa3e524d60ca..a38525c7f461586576104488f463e9b410fa6338 100644 (file)
Binary files a/release/datafiles/blenderbuttons and b/release/datafiles/blenderbuttons differ
index d0f03aee65c5fa7366f9e4003131912518d92b02..12cb2f61df07a4aee2a3daae53c9d5beb426e7a3 100644 (file)
@@ -545,7 +545,7 @@ def write_pov(filename, scene=None, info_callback=None):
 
         mist = world.mist
 
-        if mist.enabled:
+        if mist.use_mist:
             file.write('fog {\n')
             file.write('\tdistance %.6f\n' % mist.depth)
             file.write('\tcolor rgbt<%.3g, %.3g, %.3g, %.3g>\n' % (tuple(world.horizon_color) + (1 - mist.intensity,)))
@@ -629,7 +629,7 @@ def write_pov_ini(filename_ini, filename_pov, filename_image):
     file.write('Output_File_Type=T\n') # TGA, best progressive loading
     file.write('Output_Alpha=1\n')
 
-    if render.antialiasing:
+    if render.render_antialiasing:
         aa_mapping = {'5': 2, '8': 3, '11': 4, '16': 5} # method 1 assumed
         file.write('Antialias=1\n')
         file.write('Antialias_Depth=%d\n' % aa_mapping[render.antialiasing_samples])
index ee92399287f31a3e34b5947735d179dfeb738346..f0b20837e26c2f94089be6e8dc89142087cc38fd 100644 (file)
@@ -1504,17 +1504,14 @@ def write(filename, batch_objects = None, \
         file.write('\n\t\tPolygonVertexIndex: ')
         i=-1
         for f in me.faces:
-            fi = [v for v in f.verts]
-            # fi = [v_index for j, v_index in enumerate(f.verts) if v_index != 0 or j != 3]
-#                      fi = [v.index for v in f]
+            fi = f.verts[:]
 
-            # flip the last index, odd but it looks like
-            # this is how fbx tells one face from another
-            fi[-1] = -(fi[-1]+1)
+            # last index XORd w. -1 indicates end of face
+            fi[-1] = fi[-1] ^ -1
             fi = tuple(fi)
+
             if i==-1:
                 if len(fi) == 3:       file.write('%i,%i,%i' % fi )
-#                              if len(f) == 3:         file.write('%i,%i,%i' % fi )
                 else:                          file.write('%i,%i,%i,%i' % fi )
                 i=0
             else:
@@ -1522,10 +1519,26 @@ def write(filename, batch_objects = None, \
                     file.write('\n\t\t')
                     i=0
                 if len(fi) == 3:       file.write(',%i,%i,%i' % fi )
-#                              if len(f) == 3:         file.write(',%i,%i,%i' % fi )
                 else:                          file.write(',%i,%i,%i,%i' % fi )
             i+=1
 
+        # write loose edges as faces.
+        for ed in me.edges:
+            if ed.loose:
+                ed_val = ed.verts[:]
+                ed_val = ed_val[0], ed_val[-1] ^ -1
+
+                if i==-1:
+                    file.write('%i,%i' % ed_val)
+                    i=0
+                else:
+                    if i==13:
+                        file.write('\n\t\t')
+                        i=0
+                    file.write(',%i,%i' % ed_val)
+            i+=1
+
+
         file.write('\n\t\tEdges: ')
         i=-1
         for ed in me.edges:
@@ -2960,8 +2973,7 @@ Takes:  {''')
     # --------------------------- Footer
     if world:
         m = world.mist
-        has_mist = m.enabled
-#              has_mist = world.mode & 1
+        has_mist = m.use_mist
         mist_intense = m.intensity
         mist_start = m.start
         mist_end = m.depth
index bab692f9daf75fec08c574ee5dcb171fa5df19ef..4a708d684c82dde8a048d0b2aa6cd10d63bc59a7 100644 (file)
@@ -458,13 +458,11 @@ def bvh_node_dict2armature(context, bvh_nodes, ROT_MODE='XYZ', IMPORT_START_FRAM
             pose_bone = pose_bones[bone_name]
             pose_bone.rotation_mode = eul_order_lookup[tuple(bvh_node.rot_order)]
 
-    elif ROT_MODE == 'XYZ':
-        print(2)
+    elif ROT_MODE != 'QUATERNION':
         for pose_bone in pose_bones:
-            pose_bone.rotation_mode = 'XYZ'
+            pose_bone.rotation_mode = ROT_MODE
     else:
         # Quats default
-        print(3)
         pass
 
     context.scene.update()
@@ -520,13 +518,13 @@ def bvh_node_dict2armature(context, bvh_nodes, ROT_MODE='XYZ', IMPORT_START_FRAM
             lx, ly, lz, rx, ry, rz = bvh_node.anim_data[frame_current + 1]
 
             if bvh_node.has_rot:
-                bone_rotation_matrix = Euler(rx, ry, rz).to_matrix().resize4x4()
+                bone_rotation_matrix = Euler((rx, ry, rz)).to_matrix().resize4x4()
                 bone_rotation_matrix = bone_rest_matrix_inv * bone_rotation_matrix * bone_rest_matrix
 
                 if ROT_MODE == 'QUATERNION':
                     pose_bone.rotation_quaternion = bone_rotation_matrix.to_quat()
                 else:
-                    euler = bone_rotation_matrix.to_euler('XYZ', prev_euler[i]) # pose_bone.rotation_mode # TODO, XYZ default for now
+                    euler = bone_rotation_matrix.to_euler(pose_bone.rotation_mode, prev_euler[i])
                     pose_bone.rotation_euler = euler
                     prev_euler[i] = euler
 
@@ -569,17 +567,17 @@ class BvhImporter(bpy.types.Operator):
     loop = BoolProperty(name="Loop", description="Loop the animation playback", default=False)
     rotate_mode = EnumProperty(items=(
             ('QUATERNION', "Quaternion", "Convert rotations to quaternions"),
-            ('NATIVE', "Euler (Native)", "Use the rotation order defined in the BVH file"),
+            ('NATIVE', "Euler (Native)", "Use the rotation order defined in the BVH file"),
             ('XYZ', "Euler (XYZ)", "Convert rotations to euler XYZ"),
-            ('XZY', "Euler (XZY)", "Convert rotations to euler XZY"),
-            ('YXZ', "Euler (YXZ)", "Convert rotations to euler YXZ"),
-            ('YZX', "Euler (YZX)", "Convert rotations to euler YZX"),
-            ('ZXY', "Euler (ZXY)", "Convert rotations to euler ZXY"),
-            # ('ZYX', "Euler (ZYX)", "Convert rotations to euler ZYX")),
+            ('XZY', "Euler (XZY)", "Convert rotations to euler XZY"),
+            ('YXZ', "Euler (YXZ)", "Convert rotations to euler YXZ"),
+            ('YZX', "Euler (YZX)", "Convert rotations to euler YZX"),
+            ('ZXY', "Euler (ZXY)", "Convert rotations to euler ZXY"),
+            ('ZYX', "Euler (ZYX)", "Convert rotations to euler ZYX"),
             ),
                 name="Rotation",
                 description="Rotation conversion.",
-                default='QUATERNION')
+                default='NATIVE')
 
     def execute(self, context):
         # print("Selected: " + context.active_object.name)
index 884fa92ddd01b8995685b8e5f790a119fa855d02..8fef767291296b999c0c9fc90494ef3f1298c6b5 100644 (file)
@@ -104,7 +104,7 @@ from bpy.props import *
 
 class importMDD(bpy.types.Operator):
     '''Import MDD vertex keyframe file to shape keys'''
-    bl_idname = "import.mdd"
+    bl_idname = "import_shape.mdd"
     bl_label = "Import MDD"
 
     # get first scene to get min and max properties for frames, fps
index e06d061f1738e0ea1b699054ef85a340477e2e49..f5f104d6d9229d2eb6eb6dc7a4231be6d46b2693 100644 (file)
@@ -27,6 +27,7 @@ from netrender import master_html
 from netrender import utils
 from netrender import balancing
 from netrender import ui
+from netrender import repath
 
 jobs = []
 slaves = []
index a2912c78c56a04b79f3209471464f41ff05a3aca..e7656f498b4a450800d5bf35e9cd580b98ab9150 100644 (file)
@@ -105,6 +105,7 @@ JOB_TYPES = {
 class RenderFile:
     def __init__(self, filepath = "", index = 0, start = -1, end = -1, signature=0):
         self.filepath = filepath
+        self.original_path = filepath
         self.signature = signature
         self.index = index
         self.start = start
@@ -113,6 +114,7 @@ class RenderFile:
     def serialize(self):
         return         {
                     "filepath": self.filepath,
+                    "original_path": self.original_path,
                     "index": self.index,
                     "start": self.start,
                     "end": self.end,
@@ -125,6 +127,7 @@ class RenderFile:
             return None
 
         rfile = RenderFile(data["filepath"], data["index"], data["start"], data["end"], data["signature"])
+        rfile.original_path = data["original_path"]
 
         return rfile
 
index 4c027436560c6efeb92d5113aa21ac27112e3383..fbb0f0b40439686e1049c9ae126f123c57b7b747 100644 (file)
@@ -158,6 +158,36 @@ class RENDER_OT_netclientsend(bpy.types.Operator):
     def invoke(self, context, event):
         return self.execute(context)
 
+@rnaType
+class RENDER_OT_netclientsendframe(bpy.types.Operator):
+    '''Send Render Job with current frame to the Network'''
+    bl_idname = "render.netclientsendframe"
+    bl_label = "Send current frame job"
+
+    def poll(self, context):
+        return True
+
+    def execute(self, context):
+        scene = context.scene
+        netsettings = scene.network_render
+
+        try:
+            conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
+
+            if conn:
+                # Sending file
+                scene.network_render.job_id = client.clientSendJob(conn, scene, False)
+                conn.close()
+                self.report('INFO', "Job sent to master")
+        except Exception as err:
+            self.report('ERROR', str(err))
+
+
+        return {'FINISHED'}
+
+    def invoke(self, context, event):
+        return self.execute(context)
+
 @rnaType
 class RENDER_OT_netclientstatus(bpy.types.Operator):
     '''Refresh the status of the current jobs'''
diff --git a/release/scripts/io/netrender/repath.py b/release/scripts/io/netrender/repath.py
new file mode 100755 (executable)
index 0000000..5287fc0
--- /dev/null
@@ -0,0 +1,145 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+import sys, os
+import subprocess
+
+import bpy
+
+from netrender.utils import *
+import netrender.model
+
+BLENDER_PATH = sys.argv[0]
+
+def reset(job):
+    main_file = job.files[0]
+    
+    job_full_path = main_file.filepath
+
+    if os.path.exists(job_full_path + ".bak"):
+        os.remove(job_full_path) # repathed file
+        os.renames(job_full_path + ".bak", job_full_path)
+
+def update(job):
+    paths = []
+    
+    main_file = job.files[0]
+    
+    job_full_path = main_file.filepath
+
+        
+    path, ext = os.path.splitext(job_full_path)
+    
+    new_path = path + ".remap" + ext 
+    
+    all = main_file.filepath == main_file.original_path 
+    
+    for rfile in job.files[1:]:
+        if all or rfile.original_path != rfile.filepath:
+            paths.append(rfile.original_path)
+            paths.append(rfile.filepath)
+    
+    # Only update if needed
+    if paths:        
+        process = subprocess.Popen([BLENDER_PATH, "-b", "-noaudio", job_full_path, "-P", __file__, "--", new_path] + paths, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+        process.wait()
+        
+        os.renames(job_full_path, job_full_path + ".bak")
+        os.renames(new_path, job_full_path)
+
+def process(paths):
+    def processPointCache(point_cache):
+        point_cache.external = False
+
+    def processFluid(fluid):
+        new_path = path_map.get(fluid.path, None)
+        if new_path:
+            fluid.path = new_path
+    
+    path_map = {}
+    for i in range(0, len(paths), 2):
+        # special case for point cache
+        if paths[i].endswith(".bphys"):
+            pass # Don't need them in the map, they all use the default external path
+            # NOTE: This is probably not correct all the time, need to be fixed.
+        # special case for fluids
+        elif paths[i].endswith(".bobj.gz"):
+            path_map[os.path.split(paths[i])[0]] = os.path.split(paths[i+1])[0]
+        else:
+            path_map[paths[i]] = paths[i+1]
+    
+    ###########################
+    # LIBRARIES
+    ###########################
+    for lib in bpy.data.libraries:
+        file_path = bpy.utils.expandpath(lib.filename)
+        new_path = path_map.get(file_path, None)
+        if new_path:
+            lib.filename = new_path
+
+    ###########################
+    # IMAGES
+    ###########################
+    for image in bpy.data.images:
+        if image.source == "FILE" and not image.packed_file:
+            file_path = bpy.utils.expandpath(image.filename)
+            new_path = path_map.get(file_path, None)
+            if new_path:
+                image.filename = new_path
+            
+
+    ###########################
+    # FLUID + POINT CACHE
+    ###########################
+    for object in bpy.data.objects:
+        for modifier in object.modifiers:
+            if modifier.type == 'FLUID_SIMULATION' and modifier.settings.type == "DOMAIN":
+                processFluid(settings)
+            elif modifier.type == "CLOTH":
+                processPointCache(modifier.point_cache)
+            elif modifier.type == "SOFT_BODY":
+                processPointCache(modifier.point_cache)
+            elif modifier.type == "SMOKE" and modifier.smoke_type == "TYPE_DOMAIN":
+                processPointCache(modifier.domain_settings.point_cache_low)
+                if modifier.domain_settings.highres:
+                    processPointCache(modifier.domain_settings.point_cache_high)
+            elif modifier.type == "MULTIRES" and modifier.external:
+                file_path = bpy.utils.expandpath(modifier.filename)
+                new_path = path_map.get(file_path, None)
+                if new_path:
+                    modifier.filename = new_path
+
+        # particles modifier are stupid and don't contain data
+        # we have to go through the object property
+        for psys in object.particle_systems:
+            processPointCache(psys.point_cache)
+                
+
+if __name__ == "__main__":
+    try:
+        i = sys.argv.index("--")
+    except:
+        i = 0
+    
+    if i:
+        new_path = sys.argv[i+1]
+        args = sys.argv[i+2:]
+        
+        process(args)
+        
+        bpy.ops.wm.save_as_mainfile(path=new_path, check_existing=False)
index 43420c1b5b686b12956a41a5ef777e94a7b2a88a..9fd00152dc129bb65a7c908b960e8878d64a7d51 100644 (file)
@@ -22,6 +22,7 @@ import subprocess, time
 
 from netrender.utils import *
 import netrender.model
+import netrender.repath
 
 BLENDER_PATH = sys.argv[0]
 
@@ -75,9 +76,10 @@ def testFile(conn, job_id, slave_id, rfile, JOB_PREFIX, main_path = None):
         
         if not found:
             print("Found file %s at %s but signature mismatch!" % (rfile.filepath, job_full_path))
+            job_full_path = prefixPath(JOB_PREFIX, rfile.filepath, main_path, force = True)
 
     if not found:
-        temp_path = JOB_PREFIX + "slave.temp.blend"
+        temp_path = JOB_PREFIX + "slave.temp"
         conn.request("GET", fileURL(job_id, rfile.index), headers={"slave-id":slave_id})
         response = conn.getresponse()
 
@@ -94,6 +96,8 @@ def testFile(conn, job_id, slave_id, rfile, JOB_PREFIX, main_path = None):
         f.close()
 
         os.renames(temp_path, job_full_path)
+        
+    rfile.filepath = job_full_path
 
     return job_full_path
 
@@ -138,11 +142,14 @@ def render_slave(engine, netsettings, threads):
                     job_full_path = testFile(conn, job.id, slave_id, job.files[0], JOB_PREFIX)
                     print("Fullpath", job_full_path)
                     print("File:", main_file, "and %i other files" % (len(job.files) - 1,))
-                    engine.update_stats("", "Render File "+ main_file+ " for job "+ job.id)
 
                     for rfile in job.files[1:]:
-                        print("\t", rfile.filepath)
                         testFile(conn, job.id, slave_id, rfile, JOB_PREFIX, main_path)
+                        print("\t", rfile.filepath)
+                        
+                    netrender.repath.update(job)
+
+                    engine.update_stats("", "Render File "+ main_file+ " for job "+ job.id)
 
                 # announce log to master
                 logfile = netrender.model.LogFile(job.id, slave_id, [frame.number for frame in job.frames])
@@ -198,6 +205,9 @@ def render_slave(engine, netsettings, threads):
                         if testCancel(conn, job.id, first_frame):
                             cancelled = True
 
+                if job.type == netrender.model.JOB_BLENDER:
+                    netrender.repath.reset(job)
+
                 # read leftovers if needed
                 stdout += process.stdout.read()
 
index cef2c542b9c433bc18561e75811277650aaadbaa..c554c3031fba369029f221577f7e7193a2878dee 100644 (file)
@@ -187,6 +187,7 @@ class RENDER_PT_network_job(bpy.types.Panel, RenderButtonsPanel):
         if netsettings.server_address != "[default]":
             layout.operator("render.netclientanim", icon='RENDER_ANIMATION')
             layout.operator("render.netclientsend", icon='FILE_BLEND')
+            layout.operator("render.netclientsendframe", icon='RENDER_STILL')
             if netsettings.job_id:
                 row = layout.row()
                 row.operator("render.render", text="Get Image", icon='RENDER_STILL')
index acd45178c2fb19a8db54461217dc5466b3acb291..f194cdc9559589f67935bf3ca8f75a4dd15ae834 100644 (file)
@@ -28,7 +28,7 @@ try:
 except:
   bpy = None
 
-VERSION = bytes("0.8", encoding='utf8')
+VERSION = bytes("0.9", encoding='utf8')
 
 # Jobs status
 JOB_WAITING = 0 # before all data has been entered
@@ -166,18 +166,21 @@ def hashData(data):
     return m.hexdigest()
     
 
-def prefixPath(prefix_directory, file_path, prefix_path):
+def prefixPath(prefix_directory, file_path, prefix_path, force = False):
     if os.path.isabs(file_path):
         # if an absolute path, make sure path exists, if it doesn't, use relative local path
         full_path = file_path
-        if not os.path.exists(full_path):
+        if force or not os.path.exists(full_path):
             p, n = os.path.split(full_path)
 
             if prefix_path and p.startswith(prefix_path):
-                directory = prefix_directory + p[len(prefix_path):]
-                full_path = directory + os.sep + n
-                if not os.path.exists(directory):
-                    os.mkdir(directory)
+                if len(prefix_path) < len(p):
+                    directory = prefix_directory + p[len(prefix_path)+1:] + os.sep # +1 to remove separator
+                    if not os.path.exists(directory):
+                        os.mkdir(directory)
+                else:
+                    directory = prefix_directory
+                full_path = directory + n
             else:
                 full_path = prefix_directory + n
     else:
index 777f5f052e20310e3f4587730785932d9114bcea..77b0f3ebacdbe360be478ac6933bdb8ab11a9e63 100644 (file)
@@ -26,7 +26,7 @@ def RKS_POLL_selected_objects(ksi, context):
 def RKS_POLL_selected_bones(ksi, context):
     # we must be in Pose Mode, and there must be some bones selected 
     if (context.active_object) and (context.active_object.mode == 'POSE'):
-        if context.active_pose_bone or len(context.select_pose_bones):
+        if context.active_pose_bone or len(context.selected_pose_bones):
             return True;
     
     # nothing selected 
diff --git a/release/scripts/modules/add_object_utils.py b/release/scripts/modules/add_object_utils.py
new file mode 100644 (file)
index 0000000..e4130d9
--- /dev/null
@@ -0,0 +1,74 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+
+import bpy
+import mathutils
+
+def _align_matrix(context):
+    # TODO, local view cursor!
+    location = mathutils.TranslationMatrix(context.scene.cursor_location)
+
+    if context.user_preferences.edit.object_align == 'VIEW' and context.space_data.type == 'VIEW_3D':
+        rotation = context.space_data.region_3d.view_matrix.rotation_part().invert().resize4x4()
+    else:
+        rotation = mathutils.Matrix()
+
+    align_matrix = location * rotation
+
+    return align_matrix
+
+
+def add_object_data(obdata, context):
+
+    scene = context.scene
+
+    # ugh, could be made nicer
+    for ob in scene.objects:
+        ob.selected = False
+
+    obj_new = bpy.data.objects.new(obdata.name, obdata)
+
+    base = scene.objects.link(obj_new)
+    base.selected = True
+
+    if context.space_data and context.space_data.type == 'VIEW_3D':
+        base.layers_from_view(context.space_data)
+
+
+    obj_new.matrix = _align_matrix(context)
+
+    obj_act = scene.objects.active
+
+    if obj_act and obj_act.mode == 'EDIT' and obj_act.type == obj_new.type:
+        bpy.ops.object.mode_set(mode='OBJECT')
+
+        obj_act.selected = True
+        scene.update() # apply location
+        #scene.objects.active = obj_new
+
+        bpy.ops.object.join() # join into the active.
+
+        bpy.ops.object.mode_set(mode='EDIT')
+    else:
+        scene.objects.active = obj_new
+        if context.user_preferences.edit.enter_edit_mode:
+            bpy.ops.object.mode_set(mode='EDIT')
+
+    return base
index a3fee82e56685cbcddaa145719fb3328894146c9..cab5ee5e684360966eb01b2cb00dbaa995532a51 100644 (file)
@@ -27,7 +27,7 @@ import bpy as _bpy
 import os as _os
 import sys as _sys
 
-from _bpy import home_paths
+from _bpy import home_paths, blend_paths
 
 
 def _test_import(module_name, loaded_modules):
@@ -332,3 +332,51 @@ def preset_paths(subdir):
     '''
 
     return (_os.path.join(_presets, subdir), )
+
+
+def smpte_from_seconds(time, fps=None):
+    '''
+    Returns an SMPTE formatted string from the time in seconds: "HH:MM:SS:FF".
+
+    If the fps is not given the current scene is used.
+    '''
+    import math
+
+    if fps is None:
+        fps = _bpy.context.scene.render.fps
+
+    hours = minutes = seconds = frames = 0
+
+    if time < 0:
+        time = - time
+        neg = "-"
+    else:
+        neg = ""
+
+    if time >= 3600.0: # hours
+        hours = int(time / 3600.0)
+        time = time % 3600.0
+    if time >= 60.0: # mins
+        minutes = int(time / 60.0)
+        time = time % 60.0
+
+    seconds = int(time)
+    frames= int(round(math.floor(((time - seconds) * fps))))
+
+    return "%s%02d:%02d:%02d:%02d" % (neg, hours, minutes, seconds, frames)
+
+
+def smpte_from_frame(frame, fps=None, fps_base=None):
+    '''
+    Returns an SMPTE formatted string from the frame: "HH:MM:SS:FF".
+
+    If the fps and fps_base are not given the current scene is used.
+    '''
+
+    if fps is None:
+        fps = _bpy.context.scene.render.fps
+
+    if fps_base is None:
+        fps_base = _bpy.context.scene.render.fps_base
+
+    return smpte_from_seconds((frame * fps_base) / fps, fps)
index 5f3270506686db42fe2be1906c33c27638e4a81d..cf8e0c8c328b2697f3b213be53c80cfc9c7f098a 100644 (file)
@@ -45,21 +45,21 @@ class Object(bpy_types.ID):
     def children(self):
         """All the children of this object"""
         import bpy
-        return [child for child in bpy.data.objects if child.parent == self]
+        return tuple(child for child in bpy.data.objects if child.parent == self)
 
     @property
     def group_users(self):
         """The groups this object is in"""
         import bpy
         name = self.name
-        return [group for group in bpy.data.groups if name in group.objects]
+        return tuple(group for group in bpy.data.groups if name in group.objects)
 
     @property
     def scene_users(self):
         """The scenes this object is in"""
         import bpy
         name = self.name
-        return [scene for scene in bpy.data.scenes if name in scene.objects]
+        return tuple(scene for scene in bpy.data.scenes if name in scene.objects)
 
 
 class _GenericBone:
@@ -303,7 +303,7 @@ class Mesh(bpy_types.ID):
         edge_face_count_dict = self.edge_face_count_dict
         return [edge_face_count_dict.get(ed.key, 0) for ed in self.edges]
 
-    def edge_loops(self, faces=None, seams=()):
+    def edge_loops_from_faces(self, faces=None, seams=()):
         """
         Edge loops defined by faces
 
@@ -314,7 +314,7 @@ class Mesh(bpy_types.ID):
         return a list of edge key lists
         [ [(0,1), (4, 8), (3,8)], ...]
 
-        optionaly, seams are edge keys that will be removed
+        return a list of edge vertex index lists
         """
 
         OTHER_INDEX = 2, 3, 0, 1 # opposite face index
@@ -379,6 +379,71 @@ class Mesh(bpy_types.ID):
 
         return edge_loops
 
+    def edge_loops_from_edges(self, edges=None):
+        """
+        Edge loops defined by edges
+
+        Takes me.edges or a list of edges and returns the edge loops
+
+        return a list of vertex indices.
+        [ [1, 6, 7, 2], ...]
+
+        closed loops have matching start and end values.
+        """
+        line_polys = []
+        
+        # Get edges not used by a face
+        if edges is None:
+            edges = self.edges
+
+        if not hasattr(edges, "pop"):
+            edges = edges[:]
+
+        edge_dict= dict((ed.key, ed) for ed in self.edges if ed.selected)
+        
+        while edges:
+            current_edge= edges.pop()
+            vert_end, vert_start = current_edge.verts[:]
+            line_poly = [vert_start, vert_end]
+
+            ok = True
+            while ok:
+                ok = False
+                #for i, ed in enumerate(edges):
+                i = len(edges)
+                while i:
+                    i -= 1
+                    ed = edges[i]
+                    v1, v2 = ed.verts
+                    if v1 == vert_end:
+                        line_poly.append(v2)
+                        vert_end = line_poly[-1]
+                        ok = 1
+                        del edges[i]
+                        #break
+                    elif v2 == vert_end:
+                        line_poly.append(v1)
+                        vert_end = line_poly[-1]
+                        ok = 1
+                        del edges[i]
+                        #break
+                    elif v1 == vert_start:
+                        line_poly.insert(0, v2)
+                        vert_start = line_poly[0]
+                        ok = 1
+                        del edges[i]
+                        #break    
+                    elif v2 == vert_start:
+                        line_poly.insert(0, v1)
+                        vert_start = line_poly[0]
+                        ok = 1
+                        del edges[i]
+                        #break
+            line_polys.append(line_poly)
+
+        return line_polys
+
+
 
 class MeshEdge(StructRNA):
     __slots__ = ()
@@ -410,6 +475,19 @@ class MeshFace(StructRNA):
         return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[3]), ord_ind(verts[3], verts[0])
 
 
+class Text(bpy_types.ID):
+    __slots__ = ()
+
+    def as_string(self):
+        """Return the text as a string."""
+        return "\n".join(line.line for line in self.lines)
+
+    def from_string(self, string):
+        """Replace text with this string."""
+        self.clear()
+        self.write(string)
+
+
 import collections
 
 
index b75b26b5f2f79f02ac6d88ed0b3e8c2869bf4d6c..7a99eb5d80ac0c0a9d8c174ee7d3d5b2097e102d 100644 (file)
@@ -192,7 +192,7 @@ def fk(obj, definitions, base_names, options):
 
     # shoulder is used as a hinge
     fk_chain.rename("shoulder", "MCH-%s_hinge" % base_names[mt.arm])
-    fk_chain.shoulder_e.translate(Vector(0.0, fk_chain.shoulder_e.length / 2, 0.0))
+    fk_chain.shoulder_e.translate(Vector((0.0, fk_chain.shoulder_e.length / 2, 0.0)))
 
     # upper arm constrains to this.
     ex.socket_e = copy_bone_simple(arm, mt.arm, "MCH-%s_socket" % base_names[mt.arm])
@@ -240,7 +240,7 @@ def fk(obj, definitions, base_names, options):
         con.name = "hinge"
         con.target = obj
         con.subtarget = mt.shoulder
-        driver_fcurve = con.driver_add("influence", 0)
+        driver_fcurve = con.driver_add("influence")
         driver = driver_fcurve.driver
 
 
index 20bb08f39a89d91e654ac86dce6f34cd5a14aa6b..48f0448dfb39fc1faf2b7005a5f7d77aaa953c33 100644 (file)
@@ -57,7 +57,7 @@ def addget_shape_key_driver(obj, name="Key"):
             if driver_s.data_path == driver_path:
                 fcurve = driver_s
     if fcurve == None:
-        fcurve = obj.data.shape_keys.keys[name].driver_add("value", 0)
+        fcurve = obj.data.shape_keys.keys[name].driver_add("value")
         fcurve.driver.type = 'AVERAGE'
         new = True
 
@@ -217,7 +217,7 @@ def control(obj, definitions, base_names, options):
         eyes += ["ORG-"+name]
 
     # Get the average position of the eyes
-    center = Vector(0,0,0)
+    center = Vector((0, 0, 0))
     for eye in eyes:
         center += eb[eye].head
     if len(eyes) != 0:
@@ -295,7 +295,7 @@ def control(obj, definitions, base_names, options):
     con.target = obj
     con.subtarget = head
 
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     mod = fcurve.modifiers[0]
index 30492e4e138cdc1aefbcd1c1eb769484b2c078d2..bb9749011c20d030eb4257955b11d53d13a311cc 100644 (file)
@@ -299,14 +299,15 @@ def control(obj, definitions, base_names, options):
     lid8 = copy_bone_simple(obj.data, definitions[9], base_names[definitions[9]]).name
 
     size = eb[lid1].length
-    eb[lid1].tail = eb[lid1].head + Vector(0,size,0)
-    eb[lid2].tail = eb[lid2].head + Vector(0,size,0)
-    eb[lid3].tail = eb[lid3].head + Vector(0,size,0)
-    eb[lid4].tail = eb[lid4].head + Vector(0,size,0)
-    eb[lid5].tail = eb[lid5].head + Vector(0,size,0)
-    eb[lid6].tail = eb[lid6].head + Vector(0,size,0)
-    eb[lid7].tail = eb[lid7].head + Vector(0,size,0)
-    eb[lid8].tail = eb[lid8].head + Vector(0,size,0)
+    size_y = Vector(0.0, size, 0.0)
+    eb[lid1].tail = eb[lid1].head + size_y
+    eb[lid2].tail = eb[lid2].head + size_y
+    eb[lid3].tail = eb[lid3].head + size_y
+    eb[lid4].tail = eb[lid4].head + size_y
+    eb[lid5].tail = eb[lid5].head + size_y
+    eb[lid6].tail = eb[lid6].head + size_y
+    eb[lid7].tail = eb[lid7].head + size_y
+    eb[lid8].tail = eb[lid8].head + size_y
 
     eb[lid1].roll = 0
     eb[lid2].roll = 0
@@ -438,7 +439,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = -distance*2
     con.maximum = distance
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -457,7 +458,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = -distance*2
     con.maximum = distance
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -475,7 +476,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = -distance*2
     con.maximum = distance
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -493,7 +494,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = -distance*2
     con.maximum = distance
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -511,7 +512,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = -distance*2
     con.maximum = distance
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -530,7 +531,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = -distance
     con.maximum = distance*2
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -548,7 +549,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = -distance
     con.maximum = distance*2
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -566,7 +567,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = -distance
     con.maximum = distance*2
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -584,7 +585,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = -distance
     con.maximum = distance*2
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -602,7 +603,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = -distance
     con.maximum = distance*2
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
index 27ed437b5ac0fd39c727fd64c1548018b23c4607..63f1816012bbae8e86afb7b6fe307c0c86915e58 100644 (file)
@@ -291,7 +291,7 @@ def main(obj, bone_definition, base_names, options):
 
         hinge_driver_path = pb[control].path_from_id() + '["hinge"]'
 
-        fcurve = con.driver_add("influence", 0)
+        fcurve = con.driver_add("influence")
         driver = fcurve.driver
         var = driver.variables.new()
         driver.type = 'AVERAGE'
index 2ea217847d7a35200f78b83184800989d7a54684..53028986873c803cee21a0f8f4013a4f5ae56b7f 100644 (file)
@@ -201,7 +201,7 @@ def ik(obj, bone_definition, base_names, options):
     ik.knee_target_e.local_location = False
 
     # roll the bone to point up... could also point in the same direction as ik.foot_roll
-    # ik.foot_roll_02_e.matrix * Vector(0.0, 0.0, 1.0) # ACK!, no rest matrix in editmode
+    # ik.foot_roll_02_e.matrix * Vector((0.0, 0.0, 1.0)) # ACK!, no rest matrix in editmode
     ik.foot_roll_01_e.align_roll((0.0, 0.0, -1.0))
 
     bpy.ops.object.mode_set(mode='OBJECT')
@@ -298,7 +298,7 @@ def fk(obj, bone_definition, base_names, options):
 
     ex.thigh_socket_e = copy_bone_simple(arm, mt_chain.thigh, "MCH-%s_socket" % base_names[mt_chain.thigh], parent=True)
     ex.thigh_socket = ex.thigh_socket_e.name
-    ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector(0.0, 0.0, ex.thigh_socket_e.length / 4.0)
+    ex.thigh_socket_e.tail = ex.thigh_socket_e.head + Vector((0.0, 0.0, ex.thigh_socket_e.length / 4.0))
 
     ex.thigh_hinge_e = copy_bone_simple(arm, mt.hips, "MCH-%s_hinge" % base_names[mt_chain.thigh], parent=False)
     ex.thigh_hinge = ex.thigh_hinge_e.name
@@ -351,7 +351,7 @@ def fk(obj, bone_definition, base_names, options):
     # add driver
     hinge_driver_path = fk_chain.thigh_p.path_from_id() + '["hinge"]'
 
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     var = driver.variables.new()
     driver.type = 'AVERAGE'
index 3ee9065af6136fd80dfbfc826b56ce7356c37c8b..688387bbd53b5bf8aac2da7630513e07d1c70055 100644 (file)
@@ -160,7 +160,7 @@ def ik(obj, bone_definition, base_names, options):
     ik.foot_roll_e.parent = ik_chain.foot_e
     ik.foot_roll_e.head -= mt_chain.toe_e.vector.normalize() * mt_chain.foot_e.length
     ik.foot_roll_e.tail = ik.foot_roll_e.head - (mt_chain.foot_e.vector.normalize() * mt_chain.toe_e.length)
-    ik.foot_roll_e.align_roll(mt_chain.foot_e.matrix.rotation_part() * Vector(0.0, 0.0, -1.0))
+    ik.foot_roll_e.align_roll(mt_chain.foot_e.matrix.rotation_part() * Vector((0.0, 0.0, -1.0)))
 
     # MCH-foot
     ik.foot_roll_01_e = copy_bone_simple(arm, mt_chain.foot, "MCH-" + base_names[mt_chain.foot])
@@ -213,7 +213,7 @@ def ik(obj, bone_definition, base_names, options):
     con = mt_chain.thigh_p.constraints.new('COPY_TRANSFORMS')
     con.target = obj
     con.subtarget = ik_chain.thigh
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     var = driver.variables.new()
     driver.type = 'AVERAGE'
@@ -225,7 +225,7 @@ def ik(obj, bone_definition, base_names, options):
     con = mt_chain.shin_p.constraints.new('COPY_TRANSFORMS')
     con.target = obj
     con.subtarget = ik_chain.shin
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     var = driver.variables.new()
     driver.type = 'AVERAGE'
@@ -237,7 +237,7 @@ def ik(obj, bone_definition, base_names, options):
     con = mt_chain.foot_p.constraints.new('COPY_TRANSFORMS')
     con.target = obj
     con.subtarget = ik.foot_roll_02
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     var = driver.variables.new()
     driver.type = 'AVERAGE'
@@ -249,7 +249,7 @@ def ik(obj, bone_definition, base_names, options):
     con = mt_chain.toe_p.constraints.new('COPY_TRANSFORMS')
     con.target = obj
     con.subtarget = ik_chain.toe
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     var = driver.variables.new()
     driver.type = 'AVERAGE'
@@ -371,7 +371,7 @@ def fk(obj, bone_definition, base_names, options):
 
     hinge_driver_path = pb[fk_chain.thigh].path_from_id() + '["hinge"]'
 
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     var = driver.variables.new()
     driver.type = 'AVERAGE'
index 9d36c60eede362c6fcabfbfd28885238ecccbc1a..d516a48ec95012e0b29d1dfc5a8eff15271eb87d 100644 (file)
@@ -77,7 +77,7 @@ def addget_shape_key_driver(obj, name="Key"):
             if driver_s.data_path == driver_path:
                 fcurve = driver_s
     if fcurve == None:
-        fcurve = obj.data.shape_keys.keys[name].driver_add("value", 0)
+        fcurve = obj.data.shape_keys.keys[name].driver_add("value")
         fcurve.driver.type = 'AVERAGE'
         new = True
 
@@ -173,7 +173,7 @@ def deform(obj, definitions, base_names, options):
     jopen1 = copy_bone_simple(obj.data, jaw, "MCH-"+base_names[jaw]+".track1", parent=True).name
     eb[jopen1].connected = False
     eb[jopen1].head = eb[jaw].tail
-    eb[jopen1].tail = eb[jopen1].head + Vector(0, 0, eb[jaw].length/4)
+    eb[jopen1].tail = eb[jopen1].head + Vector((0, 0, eb[jaw].length/4))
 
     jopen2 = copy_bone_simple(obj.data, jopen1, "MCH-"+base_names[jaw]+".track2").name
     eb[jopen2].parent = eb[jaw]
@@ -427,7 +427,7 @@ def control(obj, definitions, base_names, options):
     # Jaw open tracker
     jopent = copy_bone_simple(obj.data, jaw_e.name, "MCH-"+base_names[jaw_e.name]+".track", parent=True).name
     eb[jopent].connected = False
-    eb[jopent].tail = jaw_e.tail + Vector(0,0,jaw_e.length)
+    eb[jopent].tail = jaw_e.tail + Vector((0.0, 0.0, jaw_e.length))
     eb[jopent].head = jaw_e.tail
 
     bpy.ops.object.mode_set(mode='OBJECT')
@@ -548,7 +548,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = 0.0
     con.maximum = 1.0
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -566,7 +566,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = 0.0
     con.maximum = 1.0
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -584,7 +584,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = 0.0
     con.maximum = 1.0
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -602,7 +602,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = 0.0
     con.maximum = 1.0
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -620,7 +620,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = 0.0
     con.maximum = 1.0
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -638,7 +638,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = 0.0
     con.maximum = 1.0
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -656,7 +656,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = 0.0
     con.maximum = 1.0
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -674,7 +674,7 @@ def control(obj, definitions, base_names, options):
     con.minimum = 0.0
     con.maximum = 1.0
     con.target_space = 'LOCAL'
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
index 7d220663256a5f9bf76b6c91dc11f20423ea0d52..0d2ab25bcc96f833ecb79ffc4e92df62f260e7f1 100644 (file)
@@ -222,7 +222,7 @@ def main(obj, bone_definition, base_names, options):
 
     hinge_driver_path = pb[neck_ctrl].path_from_id() + '["hinge"]'
 
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     var = driver.variables.new()
     driver.type = 'AVERAGE'
@@ -256,7 +256,7 @@ def main(obj, bone_definition, base_names, options):
 
     hinge_driver_path = pb[head_ctrl].path_from_id() + '["hinge"]'
 
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     var = driver.variables.new()
     driver.type = 'AVERAGE'
@@ -301,7 +301,7 @@ def main(obj, bone_definition, base_names, options):
         if i < (len(neck_head)-1):
             inf = (i+1) / len(neck_head)
 
-            fcurve = con.driver_add("influence", 0)
+            fcurve = con.driver_add("influence")
             driver = fcurve.driver
             var = driver.variables.new()
             var.name = "ext"
index 514d443a1f92e5fa48cce2ac83c91fb2e668fdd3..08f963434d1d2156d5987257cd9abdc8c8e7fd4d 100644 (file)
@@ -176,7 +176,7 @@ def main(obj, bone_definition, base_names, options):
     ex.neck_socket_e.connected = False
     ex.neck_socket_e.parent = mt.body_e
     ex.neck_socket_e.head = mt.head_e.head
-    ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0)
+    ex.neck_socket_e.tail = mt.head_e.head - Vector((0.0, neck_chain_segment_length / 2.0, 0.0))
     ex.neck_socket_e.roll = 0.0
 
 
@@ -239,7 +239,7 @@ def main(obj, bone_definition, base_names, options):
     # add driver
     hinge_driver_path = ex.head_ctrl_p.path_from_id() + '["hinge"]'
 
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     var = driver.variables.new()
     driver.type = 'AVERAGE'
@@ -259,7 +259,7 @@ def main(obj, bone_definition, base_names, options):
     target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))]
 
     ex.head_ctrl_p["bend_tot"] = 0.0
-    fcurve = ex.head_ctrl_p.driver_add('["bend_tot"]', 0)
+    fcurve = ex.head_ctrl_p.driver_add('["bend_tot"]')
     driver = fcurve.driver
     driver.type = 'SUM'
     fcurve.modifiers.remove(0) # grr dont need a modifier
@@ -296,7 +296,7 @@ def main(obj, bone_definition, base_names, options):
         con.owner_space = 'LOCAL'
         con.target_space = 'LOCAL'
 
-        fcurve = con.driver_add("influence", 0)
+        fcurve = con.driver_add("influence")
         driver = fcurve.driver
         driver.type = 'SCRIPTED'
         driver.expression = "bend/bend_tot"
index ed656cf224341cad5d30301a96457ce8a2592005..2bdd28a348a0e396fc32c45e3f69d416927f1b3c 100644 (file)
@@ -254,7 +254,7 @@ def main(obj, bone_definition, base_names, options):
         child_pbone_02 = obj.pose.bones[children[1]].bone
 
         rel_vec = child_pbone_01.head - child_pbone_02.head
-        x_vec = child_pbone_01.matrix.rotation_part() * Vector(1.0, 0.0, 0.0)
+        x_vec = child_pbone_01.matrix.rotation_part() * Vector((1.0, 0.0, 0.0))
 
         return degrees(rel_vec.angle(x_vec)) > 90.0
 
index fd0e900a7b5208b7c7fbe5f286a7509aa4d8584f..ac3987ca7e14565f2a3a6eecce21d95b9ed202eb 100644 (file)
@@ -57,7 +57,7 @@ def addget_shape_key_driver(obj, name="Key"):
             if driver_s.data_path == driver_path:
                 fcurve = driver_s
     if fcurve == None:
-        fcurve = obj.data.shape_keys.keys[name].driver_add("value", 0)
+        fcurve = obj.data.shape_keys.keys[name].driver_add("value")
         fcurve.driver.type = 'AVERAGE'
         new = True
 
index 68501ac829b10a75a229172b6e9cda7f13aa79d8..06dd3d67d4b1c7434d1c01ee69ba9e376f88a5d0 100644 (file)
@@ -54,7 +54,7 @@ def addget_shape_key_driver(obj, name="Key"):
             if driver_s.data_path == driver_path:
                 fcurve = driver_s
     if fcurve == None:
-        fcurve = obj.data.shape_keys.keys[name].driver_add("value", 0)
+        fcurve = obj.data.shape_keys.keys[name].driver_add("value")
     fcurve.driver.type = 'AVERAGE'
 
     return fcurve
index 2c30d95e666f45438c4e4c09d69c42b375aef861..7049bcf74bb03f4b682da8f514abbeb61fa151ed 100644 (file)
@@ -54,7 +54,7 @@ def addget_shape_key_driver(obj, name="Key"):
             if driver_s.data_path == driver_path:
                 fcurve = driver_s
     if fcurve == None:
-        fcurve = obj.data.shape_keys.keys[name].driver_add("value", 0)
+        fcurve = obj.data.shape_keys.keys[name].driver_add("value")
     fcurve.driver.type = 'AVERAGE'
 
     return fcurve
index 025074490cb3cf9f77912bf08f3fe4509bad137d..d3bab72d9a1b875de0e5c41c46e729b8f6b30296 100644 (file)
@@ -177,11 +177,11 @@ def main(obj, bone_definition, base_names, options):
     # copy the pelvis, offset to make MCH-spine_rotate and MCH-ribcage_hinge
     ex.ribcage_hinge_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_hinge" % base_names[mt.ribcage])
     ex.ribcage_hinge = ex.ribcage_hinge_e.name
-    ex.ribcage_hinge_e.translate(Vector(0.0, spine_chain_segment_length / 4.0, 0.0))
+    ex.ribcage_hinge_e.translate(Vector((0.0, spine_chain_segment_length / 4.0, 0.0)))
 
     ex.spine_rotate_e = copy_bone_simple(arm, mt.ribcage, "MCH-%s_rotate" % spine_chain_basename)
     ex.spine_rotate = ex.spine_rotate_e.name
-    ex.spine_rotate_e.translate(Vector(0.0, spine_chain_segment_length / 2.0, 0.0))
+    ex.spine_rotate_e.translate(Vector((0.0, spine_chain_segment_length / 2.0, 0.0)))
     ex.spine_rotate_e.connected = False
     ex.spine_rotate_e.parent = ex.pelvis_copy_e
 
@@ -294,7 +294,7 @@ def main(obj, bone_definition, base_names, options):
     con.subtarget = ex.pelvis_copy
 
     # add driver
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     var = driver.variables.new()
     driver.type = 'AVERAGE'
@@ -350,7 +350,7 @@ def main(obj, bone_definition, base_names, options):
     rib_driver_path = ex.ribcage_copy_p.path_from_id()
 
     ex.ribcage_copy_p["bend_tot"] = 0.0
-    fcurve = ex.ribcage_copy_p.driver_add('["bend_tot"]', 0)
+    fcurve = ex.ribcage_copy_p.driver_add('["bend_tot"]')
     driver = fcurve.driver
     driver.type = 'SUM'
     fcurve.modifiers.remove(0) # grr dont need a modifier
@@ -385,7 +385,7 @@ def main(obj, bone_definition, base_names, options):
         del spine_p
 
         # add driver
-        fcurve = con.driver_add("influence", 0)
+        fcurve = con.driver_add("influence")
         driver = fcurve.driver
         driver.type = 'SCRIPTED'
         driver.expression = "bend/bend_tot"
@@ -440,7 +440,7 @@ def main(obj, bone_definition, base_names, options):
         if i == spine_chain_len:
             con.head_tail = 1.0
 
-        fcurve = con.driver_add("influence", 0)
+        fcurve = con.driver_add("influence")
         driver = fcurve.driver
         var = driver.variables.new()
         driver.type = 'AVERAGE'
index 76eaf6dd4d9b1f24084d3da21e37a81297720215..47da977891392e53733d55f80a0c03a5a2da265b 100644 (file)
@@ -135,7 +135,7 @@ def main(obj, bone_definitions, base_names, options):
     # Add drivers
     bone_path = pb[bones[0]].path_from_id()
 
-    driver_fcurve = con_f.driver_add("influence", 0)
+    driver_fcurve = con_f.driver_add("influence")
     driver = driver_fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
@@ -148,7 +148,7 @@ def main(obj, bone_definitions, base_names, options):
     mod.coefficients[0] = 1.0
     mod.coefficients[1] = -1.0
 
-    driver_fcurve = con_h.driver_add("influence", 0)
+    driver_fcurve = con_h.driver_add("influence")
     driver = driver_fcurve.driver
     driver.type = 'AVERAGE'
     var = driver.variables.new()
index 43a8c2125ce61545e8b109c61c2c42f92e8b75df..b6dfe756b71292aae1ffe8cd00e490bb466c1e55 100644 (file)
@@ -179,7 +179,7 @@ def main(obj, bone_definition, base_names, options):
     ex.neck_socket_e.connected = False
     ex.neck_socket_e.parent = mt.body_e
     ex.neck_socket_e.head = mt.head_e.head
-    ex.neck_socket_e.tail = mt.head_e.head - Vector(0.0, neck_chain_segment_length / 2.0, 0.0)
+    ex.neck_socket_e.tail = mt.head_e.head - Vector((0.0, neck_chain_segment_length / 2.0, 0.0))
     ex.neck_socket_e.roll = 0.0
 
 
@@ -243,7 +243,7 @@ def main(obj, bone_definition, base_names, options):
     # add driver
     hinge_driver_path = ex.head_ctrl_p.path_to_id() + '["hinge"]'
 
-    fcurve = con.driver_add("influence", 0)
+    fcurve = con.driver_add("influence")
     driver = fcurve.driver
     var = driver.variables.new()
     driver.type = 'AVERAGE'
@@ -263,7 +263,7 @@ def main(obj, bone_definition, base_names, options):
     target_names = [("b%.2d" % (i + 1)) for i in range(len(neck_chain))]
 
     ex.head_ctrl_p["bend_tot"] = 0.0
-    fcurve = ex.head_ctrl_p.driver_add('["bend_tot"]', 0)
+    fcurve = ex.head_ctrl_p.driver_add('["bend_tot"]')
     driver = fcurve.driver
     driver.type = 'SUM'
     fcurve.modifiers.remove(0) # grr dont need a modifier
@@ -308,7 +308,7 @@ def main(obj, bone_definition, base_names, options):
         con.owner_space = 'LOCAL'
         con.target_space = 'LOCAL'
 
-        fcurve = con.driver_add("influence", 0)
+        fcurve = con.driver_add("influence")
         driver = fcurve.driver
         driver.type = 'SCRIPTED'
         driver.expression = "bend/bend_tot"
index 1d5768e7f22bc219eed7cfdc4bd71db4f13dfc5c..25ab6bebf48da5644bfe0cdf4616bd66727a4718 100644 (file)
@@ -154,7 +154,7 @@ def blend_bone_list(obj, apply_bones, from_bones, to_bones, target_bone=None, ta
         con.target = obj
         con.subtarget = to_bone_name
 
-        fcurve = con.driver_add("influence", 0)
+        fcurve = con.driver_add("influence")
         driver = fcurve.driver
         driver.type = 'AVERAGE'
         fcurve.modifiers.remove(0) # grr dont need a modifier
@@ -204,12 +204,12 @@ def add_pole_target_bone(obj, base_bone_name, name, mode='CROSS'):
         offset.length = distance
     elif mode == 'ZAVERAGE':
         # between both bones Z axis
-        z_axis_a = base_ebone.matrix.copy().rotation_part() * Vector(0.0, 0.0, -1.0)
-        z_axis_b = parent_ebone.matrix.copy().rotation_part() * Vector(0.0, 0.0, -1.0)
+        z_axis_a = base_ebone.matrix.copy().rotation_part() * Vector((0.0, 0.0, -1.0))
+        z_axis_b = parent_ebone.matrix.copy().rotation_part() * Vector((0.0, 0.0, -1.0))
         offset = (z_axis_a + z_axis_b).normalize() * distance
     else:
         # preset axis
-        offset = Vector(0, 0, 0)
+        offset = Vector((0.0, 0.0, 0.0))
         if mode[0] == "+":
             val = distance
         else:
index d0a9de329c128314463e00e0f00fdbeae34b93f0..fa1d15a7845165aada579f27ac05338219af25c3 100644 (file)
@@ -201,40 +201,40 @@ class InfoPropertyRNA:
         if self.type == "enum":
             self.enum_items[:] = rna_prop.items.keys()
 
+
         if self.array_length:
             self.default = tuple(getattr(rna_prop, "default_array", ()))
+        else:
+            self.default = getattr(rna_prop, "default", None)
+        self.default_str = "" # fallback
+
+
+        if self.type == "pointer":
+            # pointer has no default, just set as None
+            self.default = None
+            self.default_str = "None"
+        elif self.type == "string":
+            self.default_str = "\"%s\"" % self.default
+        elif self.type == "enum":
+            self.default_str = "'%s'" % self.default
+        elif self.array_length:
             self.default_str = ''
             # special case for floats
             if len(self.default) > 0:
-                if type(self.default[0]) is float:
+                if self.type == "float":
                     self.default_str = "(%s)" % ", ".join([float_as_string(f) for f in self.default])
             if not self.default_str:
                 self.default_str = str(self.default)
         else:
-            self.default = getattr(rna_prop, "default", "")
-            if type(self.default) is float:
+            if self.type == "float":
                 self.default_str = float_as_string(self.default)
             else:
                 self.default_str = str(self.default)
 
         self.srna = GetInfoStructRNA(rna_prop.srna) # valid for pointer/collections
 
-    def get_default_string(self):
-        # pointer has no default, just set as None
-        if self.type == "pointer":
-            return "None"
-        elif self.type == "string":
-            return '"' + self.default_str + '"'
-        elif self.type == "enum":
-            if self.default_str:
-                return "'" + self.default_str + "'"
-            else:
-                return ""
-
-        return self.default_str
-
     def get_arg_default(self, force=True):
-        default = self.get_default_string()
+        default = self.default_str
         if default and (force or self.is_required == False):
             return "%s=%s" % (self.identifier, default)
         return self.identifier
@@ -250,6 +250,13 @@ class InfoPropertyRNA:
                 type_str += " in [%s, %s]" % (range_str(self.min), range_str(self.max))
             elif self.type == "enum":
                 type_str += " in [%s]" % ', '.join([("'%s'" % s) for s in self.enum_items])
+
+            if not (as_arg or as_ret):
+                # write default property, ignore function args for this
+                if self.type != "pointer":
+                    if self.default_str:
+                        type_str += ", default %s" % self.default_str
+
         else:
             if self.type == "collection":
                 if self.collection_type:
@@ -261,17 +268,22 @@ class InfoPropertyRNA:
 
             type_str += collection_str + (class_fmt % self.fixed_type.identifier)
 
+        # setup qualifiers for this value.
+        type_info = []
         if as_ret:
             pass
         elif as_arg:
             if not self.is_required:
-                type_str += ", (optional)"
+                type_info.append("optional")
         else: # readonly is only useful for selfs, not args
             if self.is_readonly:
-                type_str += ", (readonly)"
+                type_info.append("readonly")
 
         if self.is_never_none:
-            type_str += ", (never None)"
+            type_info.append("never None")
+
+        if type_info:
+            type_str += (", (%s)" % ", ".join(type_info))
 
         return type_str
 
@@ -568,6 +580,16 @@ def BuildRNAInfo():
             for prop in func.return_values:
                 prop.build()
 
+    if 1:
+        for rna_info in InfoStructRNA.global_lookup.values():
+            for prop in rna_info.properties:
+                # ERROR CHECK
+                default = prop.default
+                if type(default) in (float, int):
+                    if default < prop.min or default > prop.max:
+                        print("\t %s.%s, %s not in [%s - %s]" % (rna_info.identifier, prop.identifier, default, prop.min, prop.max))
+
+
     # now for operators
     op_mods = dir(bpy.ops)
 
index 246fa4bdb7dee6599e9944943844496bf1d85124..7af57d265b9936eca137bcdac257de34293171b5 100644 (file)
@@ -253,7 +253,7 @@ class WM_OT_properties_add(bpy.types.Operator):
 class WM_OT_properties_remove(bpy.types.Operator):
     '''Internal use (edit a property path)'''
     bl_idname = "wm.properties_remove"
-    bl_label = "Add Property"
+    bl_label = "Remove Property"
 
     path = rna_path
     property = rna_property
index f9ca0f604683f67157fcc5139845a007b0ad9181..d79cbcf3e6474dba94008df0036307ba8378f737 100644 (file)
@@ -120,36 +120,10 @@ class AddTorus(bpy.types.Operator):
         mesh.add_geometry(int(len(verts_loc) / 3), 0, int(len(faces) / 4))
         mesh.verts.foreach_set("co", verts_loc)
         mesh.faces.foreach_set("verts_raw", faces)
-
-        scene = context.scene
-
-        # ugh
-        for ob in scene.objects:
-            ob.selected = False
-
         mesh.update()
-        ob_new = bpy.data.objects.new("Torus", mesh)
-        scene.objects.link(ob_new)
-        ob_new.selected = True
-
-        ob_new.location = scene.cursor_location
-
-        obj_act = scene.objects.active
-
-        if obj_act and obj_act.mode == 'EDIT':
-            bpy.ops.object.mode_set(mode='OBJECT')
-
-            obj_act.selected = True
-            scene.update() # apply location
-            #scene.objects.active = ob_new
-
-            bpy.ops.object.join() # join into the active.
 
-            bpy.ops.object.mode_set(mode='EDIT')
-        else:
-            scene.objects.active = ob_new
-            if context.user_preferences.edit.enter_edit_mode:
-                bpy.ops.object.mode_set(mode='EDIT')
+        import add_object_utils
+        add_object_utils.add_object_data(mesh, context)
 
         return {'FINISHED'}
 
index 99654505c172207025cca2bd0fa78165642c561a..87abe0b6f4762e609866561969c7b94a8f46c497 100644 (file)
@@ -40,9 +40,9 @@ def get_console(console_id):
     '''
     from code import InteractiveConsole
 
-    try:
-        consoles = get_console.consoles
-    except:
+    consoles = getattr(get_console, "consoles", None)
+
+    if consoles is None:
         consoles = get_console.consoles = {}
 
     # clear all dead consoles, use text names as IDs
@@ -53,16 +53,17 @@ def get_console(console_id):
             del consoles[id]
     '''
 
-    try:
-        console, stdout, stderr = consoles[console_id]
-        
+    console_data = consoles.get(console_id)
+
+    if console_data:
+        console, stdout, stderr = console_data
+
         # XXX, bug in python 3.1.2 ?
         # seems there is no way to clear StringIO objects for writing, have to make new ones each time.
         import io
         stdout = io.StringIO()
         stderr = io.StringIO()
-        
-    except:
+    else:
         namespace = {'__builtins__': __builtins__, 'bpy': bpy}
         console = InteractiveConsole(namespace)
 
index 45ccda1396b5a2938b60e825a412c87aaef118d2..9907362502e29cca03058e8b3082c6658fa9ab82 100644 (file)
@@ -28,7 +28,7 @@ class EditExternally(bpy.types.Operator):
     bl_label = "Image Edit Externally"
     bl_options = {'REGISTER'}
 
-    path = StringProperty(name="File Path", description="Path to an image file", maxlen= 1024, default= "")
+    path = StringProperty(name="File Path", description="Path to an image file", maxlen=1024, default="")
 
     def _editor_guess(self, context):
         import platform
index e88586b6cb8dd3233e08b644cfa5734e21a79154..d0c53758ba9757ce4cf8d51a31e2e1cd7ce9e950 100644 (file)
@@ -130,7 +130,7 @@ from bpy.props import *
 
 
 class BakeAction(bpy.types.Operator):
-    '''Add a torus mesh'''
+    '''Bake animation to an Action'''
     bl_idname = "nla.bake"
     bl_label = "Bake Action"
     bl_options = {'REGISTER', 'UNDO'}
index 8a11ef7aaf69e8d83c07f7a3652b31b4b1cf0766..a6e0930e69c8bc7af1ff63aead87bc6c8f410d07 100644 (file)
@@ -507,6 +507,26 @@ class MakeDupliFace(bpy.types.Operator):
         return {'FINISHED'}
 
 
+class IsolateTypeRender(bpy.types.Operator):
+    '''Select object matching a naming pattern'''
+    bl_idname = "object.isolate_type_render"
+    bl_label = "Isolate Render Selection"
+    bl_options = {'REGISTER', 'UNDO'}
+
+    def execute(self, context):
+        act_type = context.object.type
+        
+        for obj in context.visible_objects:
+            
+            if obj.selected:
+                obj.restrict_render = False
+            else:
+                if obj.type == act_type:
+                    obj.restrict_render = True
+
+        return {'FINISHED'}
+
+
 classes = [
     SelectPattern,
     SelectCamera,
@@ -514,6 +534,7 @@ classes = [
     SubdivisionSet,
     ShapeTransfer,
     JoinUVs,
+    IsolateTypeRender,
     MakeDupliFace]
 
 
index f02c1c62ab91aa9bcb9bec66e01e9c543b0a602b..03d70afc43b3465ad8d3d2f6d8b3b6efd3b30af0 100644 (file)
@@ -27,8 +27,8 @@ class AddPresetBase(bpy.types.Operator):
     subclasses must define
      - preset_values
      - preset_subdir '''
-    bl_idname = "render.preset_add"
-    bl_label = "Add Render Preset"
+    bl_idname = "script.add_preset_base"
+    bl_label = "Add a Python Preset"
 
     name = bpy.props.StringProperty(name="Name", description="Name of the preset, used to make the path name", maxlen=64, default="")
 
index b3b674cb97ec4320172211a4c1642cdbf7614f4d..8715f7eeec5d5c68942af03c6e0acdc207b1a081 100644 (file)
@@ -20,6 +20,8 @@
 
 import bpy
 
+from bpy.props import *
+
 
 class SequencerCrossfadeSounds(bpy.types.Operator):
     '''Do crossfading volume animation of two selected sound strips.'''
@@ -71,12 +73,75 @@ class SequencerCrossfadeSounds(bpy.types.Operator):
             return {'CANCELLED'}
 
 
+class SequencerCutMulticam(bpy.types.Operator):
+    '''Cut multicam strip and select camera.'''
+
+    bl_idname = "sequencer.cut_multicam"
+    bl_label = "Cut multicam"
+    bl_options = {'REGISTER', 'UNDO'}
+
+    camera = IntProperty(name="Camera",
+            default=1, min=1, max=32, soft_min=1, soft_max=32)
+
+    def poll(self, context):
+        if context.scene and context.scene.sequence_editor and context.scene.sequence_editor.active_strip:
+            return context.scene.sequence_editor.active_strip.type == 'MULTICAM'
+        else:
+            return False
+
+    def execute(self, context):
+        camera = self.properties.camera
+
+        s = context.scene.sequence_editor.active_strip
+
+        if not s.selected:
+            s.selected = True
+
+        cfra = context.scene.frame_current
+        bpy.ops.sequencer.cut(frame=cfra, type='HARD', side='RIGHT')
+        for s in context.scene.sequence_editor.sequences_all:
+            if s.selected and s.type == 'MULTICAM' and s.frame_final_start <= cfra and cfra < s.frame_final_end:
+                context.scene.sequence_editor.active_strip = s
+
+        context.scene.sequence_editor.active_strip.multicam_source = camera
+        return {'FINISHED'}
+
+
+class SequencerDeinterlaceSelectedMovies(bpy.types.Operator):
+    '''Deinterlace all selected movie sources.'''
+
+    bl_idname = "sequencer.deinterlace_selected_movies"
+    bl_label = "Deinterlace Movies"
+    bl_options = {'REGISTER', 'UNDO'}
+
+    def poll(self, context):
+        if context.scene and context.scene.sequence_editor:
+            return True
+        else:
+            return False
+
+    def execute(self, context):
+        for s in context.scene.sequence_editor.sequences_all:
+            if s.selected and s.type == 'MOVIE':
+                s.de_interlace = True
+
+        return {'FINISHED'}
+
+
 def register():
-    bpy.types.register(SequencerCrossfadeSounds)
+    register = bpy.types.register
+
+    register(SequencerCrossfadeSounds)
+    register(SequencerCutMulticam)
+    register(SequencerDeinterlaceSelectedMovies)
 
 
 def unregister():
-    bpy.types.unregister(SequencerCrossfadeSounds)
+    unregister = bpy.types.unregister
+
+    unregister(SequencerCrossfadeSounds)
+    unregister(SequencerCutMulticam)
+    unregister(SequencerDeinterlaceSelectedMovies)
 
 if __name__ == "__main__":
     register()
index f22db9d87a8cf2f969ddf06e57f4388603b5208b..ad25553a41c96173c0c311576755c6fcf326cd40 100644 (file)
@@ -167,18 +167,34 @@ class ExportUVLayout(bpy.types.Operator):
             fw('1 setlinewidth\n')
             fw('1 setlinejoin\n')
             fw('1 setlinecap\n')
+            fw('/DRAW {')
+            # can remove from here to next comment to disable filling, aparently alpha is not supported
+            fw('gsave\n')
+            fw('0.7 setgray\n')
+            fw('fill\n')
+            fw('grestore\n')
+            fw('0 setgray\n')
+            # remove to here
+            fw('stroke\n')
+            fw('} def\n')
             fw('newpath\n')
-
+            
+            firstline = True
             for i, uvs in self._face_uv_iter(context):
                 for j, uv in enumerate(uvs):
                     x, y = uv[0], uv[1]
                     if j == 0:
+                        if not firstline:
+                            fw('closepath\n')
+                            fw('DRAW\n')
+                            fw('newpath\n')
+                        firstline = False
                         fw('%.5f %.5f moveto\n' % (x * image_width, y * image_height))
                     else:
                         fw('%.5f %.5f lineto\n' % (x * image_width, y * image_height))
 
             fw('closepath\n')
-            fw('stroke\n')
+            fw('DRAW\n')
             fw('showpage\n')
             fw('%%EOF\n')
 
@@ -203,7 +219,7 @@ def register():
     bpy.types.IMAGE_MT_uvs.append(menu_func)
 
 
-def unreguster():
+def unregister():
     bpy.types.unregister(ExportUVLayout)
     bpy.types.IMAGE_MT_uvs.remove(menu_func)
 
index c8a13441048cf03af9daa2f124a9ce4e9ca92d8b..81229f73461d5ce8be55c9838adc1c2fb7771904 100644 (file)
@@ -180,7 +180,7 @@ def extend(obj, operator, EXTEND_MODE):
     #SEAM = me.edges.seam
 
     if EXTEND_MODE == 'LENGTH':
-        edge_loops = me.edge_loops(face_sel, [ed.key for ed in me.edges if ed.seam])
+        edge_loops = me.edge_loops_from_faces(face_sel, [ed.key for ed in me.edges if ed.seam])
         me_verts = me.verts
         for loop in edge_loops:
             looplen = [0.0]
index c7b7ee71964d66dc8126ac963288a8406d247287..c1521866a56a52597a84bf017ea9a6c063a239be 100644 (file)
@@ -69,10 +69,10 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
 
         # normalize the vector by dividing by the number of connected verts
         tot_con = len(con[i])
-        
+
         if tot_con == 0:
             continue
-        
+
         vec /= tot_con
 
         # angle is the acos of the dot product between vert and connected verts normals
index 5893a9cf472dc430f48183c47174817a95ce2562..af72c96a412f3d894a0d96d4e9275ea0e75a6535 100644 (file)
@@ -24,8 +24,7 @@ from bpy.props import *
 
 
 class MESH_OT_delete_edgeloop(bpy.types.Operator):
-    '''Export a single object as a stanford PLY with normals,
-    colours and texture coordinates.'''
+    '''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"
 
diff --git a/release/scripts/templates/operator_modal_view3d.py b/release/scripts/templates/operator_modal_view3d.py
new file mode 100644 (file)
index 0000000..afe1793
--- /dev/null
@@ -0,0 +1,55 @@
+from mathutils import Vector
+from bpy.props import FloatVectorProperty
+
+class ViewOperator(bpy.types.Operator):
+    '''Translate the view using mouse events.'''
+    bl_idname = "view3d.modal_operator"
+    bl_label = "Simple View Operator"
+
+    offset = FloatVectorProperty(name="Offset", size=3)
+
+
+    def execute(self, context):
+        v3d = context.space_data
+        rv3d = v3d.region_3d
+
+        rv3d.view_location = self._initial_location + Vector(self.properties.offset)
+
+    def modal(self, context, event):
+        v3d = context.space_data
+        rv3d = v3d.region_3d
+
+        if event.type == 'MOUSEMOVE':
+            self.properties.offset = (self._initial_mouse - Vector((event.mouse_x, event.mouse_y, 0.0))) * 0.02
+            self.execute(context)
+
+        elif event.type == 'LEFTMOUSE':
+            return {'FINISHED'}
+
+        elif event.type in ('RIGHTMOUSE', 'ESC'):
+            rv3d.view_location = self._initial_location
+            return {'CANCELLED'}
+
+        return {'RUNNING_MODAL'}
+
+    def invoke(self, context, event):
+
+        if context.space_data.type == 'VIEW_3D':
+            v3d = context.space_data
+            rv3d = v3d.region_3d
+
+            context.manager.add_modal_handler(self)
+
+            if rv3d.view_perspective == 'CAMERA':
+                rv3d.view_perspective = 'PERSP'
+
+            self._initial_mouse = Vector((event.mouse_x, event.mouse_y, 0.0))
+            self._initial_location = rv3d.view_location.copy()
+
+            return {'RUNNING_MODAL'}
+        else:
+            self.report({'WARNING'}, "Active space must be a View3d")
+            return {'CANCELLED'}
+
+
+bpy.types.register(ViewOperator)
index 311a8b119cfaf516e0aad0785108f469bf0c459b..9eb046cc2c888c1a7ea0be42fbc6ce155cc9c5d3 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 ################################################
 # Generic Panels (Independent of DataType)
@@ -61,6 +61,8 @@ class MotionPathButtonsPanel(bpy.types.Panel):
         col.label(text="Display:")
         col.prop(mps, "show_frame_numbers", text="Frame Numbers")
         col.prop(mps, "highlight_keyframes", text="Keyframes")
+        if bones:
+            col.prop(mps, "search_all_action_keyframes", text="+ Non-Grouped Keyframes")
         col.prop(mps, "show_keyframe_numbers", text="Keyframe Numbers")
 
 
index 953ab5e5abdbdc13471f3fcc7e56682fd3ecdb66..805a21b3be2b8a0c2fbc1d483499b3b21b23af4b 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class DataButtonsPanel(bpy.types.Panel):
index ba012368def34b76843b73c06da8f99b1ca0eac4..5ec50973ea4a9c88a53bdaa70c900c263743e784 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class PoseTemplateSettings(bpy.types.IDPropertyGroup):
index 982572b62a381fc346501015d729d55cbc02e97d..b6b638ef380bfff6b80ff0ab9ec6a40e4e6e0b6e 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class BoneButtonsPanel(bpy.types.Panel):
index 4ce124a279e782d4fce7b2a5517a94d93648c2b5..3abd460c4277114a6270c11e5e41b08ed51376f2 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class DataButtonsPanel(bpy.types.Panel):
index 62c81df2eceacefa3a0fc8c43770a0d19bc10ad3..5f1dc662b9765cc1b449f233cb36818739509188 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class DataButtonsPanel(bpy.types.Panel):
index a0999fb9d4ab352166d2406f3174805522ca84ed..577e32ed8400f452216687e9fb9f7c56902e86a2 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class DataButtonsPanel(bpy.types.Panel):
index 26f4b158c90193819b602b61d44fdacfe4f8ddd0..4338489ac5a1f4446489011394042fa462054b03 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class LAMP_MT_sunsky_presets(bpy.types.Menu):
index 2a78d329223a1bc8d1bd341e302917d99b7328fb..2aa719437a7dafe18cf01402509a655411f3d69f 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class DataButtonsPanel(bpy.types.Panel):
index a33b4f2236814c193ae5b4801b9800f153b876ab..44d3d19e79318a3284c91f87f654cec8ff58dfbd 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class MESH_MT_vertex_group_specials(bpy.types.Menu):
@@ -155,6 +155,9 @@ class DATA_PT_vertex_groups(DataButtonsPanel):
         col.operator("object.vertex_group_add", icon='ZOOMIN', text="")
         col.operator("object.vertex_group_remove", icon='ZOOMOUT', text="")
         col.menu("MESH_MT_vertex_group_specials", icon='DOWNARROW_HLT', text="")
+        if group:
+            col.operator("object.vertex_group_move", icon='TRIA_UP', text="").direction = 'UP'
+            col.operator("object.vertex_group_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
 
         if group:
             row = layout.row()
@@ -303,7 +306,7 @@ class DATA_PT_texface(DataButtonsPanel):
         ob = context.active_object
         rd = context.scene.render
 
-        return (context.mode =='EDIT_MESH') and (rd.engine == 'BLENDER_GAME') and ob and ob.type == 'MESH'
+        return (context.mode == 'EDIT_MESH') and (rd.engine == 'BLENDER_GAME') and ob and ob.type == 'MESH'
 
     def draw(self, context):
         layout = self.layout
index b751a9f9059238814873580cbe0824692872c00f..e0155059b98a14ac00f075ac917fa2301cea4de5 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class DataButtonsPanel(bpy.types.Panel):
index 888d20cb5e138ccc7d8f1fe10408730cc135207f..a6d6e098812584d5290eb4622e48e8b563faec83 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 narrowmod = 260
 
 
@@ -229,7 +229,7 @@ class DATA_PT_modifiers(DataButtonsPanel):
 
     def DECIMATE(self, layout, ob, md, wide_ui):
         layout.prop(md, "ratio")
-        layout.prop(md, "face_count")
+        layout.label(text="Face Count: %s" % str(md.face_count))
 
     def DISPLACE(self, layout, ob, md, wide_ui):
         split = layout.split()
index 41af955d9ecf9dedf80c1315a07842cbe15163d4..a5b443a461ba7693f89a129f81f001226db4342d 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class PhysicsButtonsPanel(bpy.types.Panel):
index f80494a9d40b9e5af45136ed1702ca9e462dd40c..1526bd004a0b60b3d302024cf033e7bb9c5db276 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 def active_node_mat(mat):
@@ -570,10 +570,11 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel):
 
         col = split.column()
         col.separator()
-        col.prop(raym, "distance", text="Max Dist")
         col.prop(raym, "depth")
+        col.prop(raym, "distance", text="Max Dist")
         col.separator()
         sub = col.split(percentage=0.4)
+        sub.active = raym.distance > 0.0
         sub.label(text="Fade To:")
         sub.prop(raym, "fade_to", text="")
 
index 7169d9369043bf189bf32991ebbdee09d63a8f81..6dbfe269436c93ddcb3637c6d12e1b1856ce1ebf 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class ObjectButtonsPanel(bpy.types.Panel):
@@ -155,13 +155,11 @@ class OBJECT_PT_groups(ObjectButtonsPanel):
         ob = context.object
         wide_ui = context.region.width > narrowui
 
-        if wide_ui:
-            split = layout.split()
-            split.operator_menu_enum("object.group_add", "group")
-            split.label()
-        else:
-            layout.operator_menu_enum("object.group_add", "group")
+        split = layout.split(percentage=0.8, align=True)
+        split.operator("object.group_link", text="Add to Group")
+        split.operator("object.group_add", text="", icon='ZOOMIN')
 
+        # XXX, this is bad practice, yes, I wrote it :( - campbell
         index = 0
         value = str(tuple(context.scene.cursor_location))
         for group in bpy.data.groups:
index a81ab2fb4d20629d7029c7a26a6b5b9e6b24bf8f..f53bac05a7c34642fb3afc27a5296e72e8ad5fe7 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class ConstraintButtonsPanel(bpy.types.Panel):
index 84b756e62570ca39096e926ce59f4e9bf78defdf..35c1f84cca5ad1b8d79290f8e5fefcd75da9974c 100644 (file)
@@ -25,7 +25,7 @@ from properties_physics_common import effector_weights_ui
 from properties_physics_common import basic_force_field_settings_ui
 from properties_physics_common import basic_force_field_falloff_ui
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 def particle_panel_enabled(context, psys):
@@ -269,10 +269,9 @@ class PARTICLE_PT_cache(ParticleButtonsPanel):
         return psys.settings.type in ('EMITTER', 'REACTOR') or (psys.settings.type == 'HAIR' and psys.hair_dynamics)
 
     def draw(self, context):
-
         psys = context.particle_system
 
-        point_cache_ui(self, context, psys.point_cache, particle_panel_enabled(context, psys), not psys.hair_dynamics, 0)
+        point_cache_ui(self, context, psys.point_cache, True, 'HAIR' if psys.hair_dynamics else 'PSYS')
 
 
 class PARTICLE_PT_velocity(ParticleButtonsPanel):
@@ -389,7 +388,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel):
             row.prop(part, "physics_type", expand=True)
         else:
             row.prop(part, "physics_type", text="")
-            
+
         if part.physics_type != 'NO':
             row = layout.row()
             col = row.column(align=True)
index 5aa15fe9403647c4d86267cf3c270ca2c2ec241c..834e3cf2450a6c62e3d5f5477776b1cbf05879a5 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 from properties_physics_common import point_cache_ui
@@ -75,7 +75,7 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel):
             # add modifier
             split.operator("object.modifier_add", text="Add").type = 'CLOTH'
             if wide_ui:
-                split.column()
+                split.label()
 
         if md:
             cloth = md.settings
@@ -142,7 +142,7 @@ class PHYSICS_PT_cloth_cache(PhysicButtonsPanel):
 
     def draw(self, context):
         md = context.cloth
-        point_cache_ui(self, context, md.point_cache, cloth_panel_enabled(md), 0, 0)
+        point_cache_ui(self, context, md.point_cache, cloth_panel_enabled(md), 'CLOTH')
 
 
 class PHYSICS_PT_cloth_collision(PhysicButtonsPanel):
index 372509773ef68cb388f87d18127bab5e9d370841..350b17e6e9f17c840c0020d5ec1cb04977db4397 100644 (file)
 
 # <pep8 compliant>
 
-narrowui = 180
+import bpy
 
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
-def point_cache_ui(self, context, cache, enabled, particles, smoke):
+#cachetype can be 'PSYS' 'HAIR' 'SMOKE' etc
+
+
+def point_cache_ui(self, context, cache, enabled, cachetype):
     layout = self.layout
 
     wide_ui = context.region.width > narrowui
-    layout.set_context_pointer("PointCache", cache)
+    layout.set_context_pointer("point_cache", cache)
 
     row = layout.row()
     row.template_list(cache, "point_cache_list", cache, "active_point_cache_index", rows=2)
@@ -34,13 +38,12 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke):
     col.operator("ptcache.remove", icon='ZOOMOUT', text="")
 
     row = layout.row()
-    row.label(text="File Name:")
-    if particles:
+    if cachetype in {'PSYS', 'HAIR'}:
         row.prop(cache, "external")
 
     if cache.external:
         split = layout.split(percentage=0.80)
-        split.prop(cache, "name", text="")
+        split.prop(cache, "name", text="File Name")
         split.prop(cache, "index", text="")
 
         layout.label(text="File Path:")
@@ -48,46 +51,59 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke):
 
         layout.label(text=cache.info)
     else:
-        layout.prop(cache, "name", text="")
-
-        if not particles:
-            row = layout.row()
-            row.enabled = enabled
-            row.prop(cache, "frame_start")
-            row.prop(cache, "frame_end")
+        layout.prop(cache, "name", text="File Name")
 
-        row = layout.row()
-
-        if cache.baked == True:
-            row.operator("ptcache.free_bake", text="Free Bake")
-        else:
-            row.operator("ptcache.bake", text="Bake").bake = True
+        split = layout.split()
+        col = split.column(align=True)
 
-        sub = row.row()
-        sub.enabled = (cache.frames_skipped or cache.outdated) and enabled
-        sub.operator("ptcache.bake", text="Calculate to Current Frame").bake = False
+        if cachetype != 'PSYS':
+            col.enabled = enabled
+            col.prop(cache, "frame_start")
+            col.prop(cache, "frame_end")
+        if cachetype != 'SMOKE':
+            col.prop(cache, "step")
 
-        row = layout.row()
-        row.enabled = enabled
-        row.operator("ptcache.bake_from_cache", text="Current Cache to Bake")
-        if not smoke:
-            row.prop(cache, "step")
+        if wide_ui:
+            col = split.column()
 
-        if not smoke:
-            row = layout.row()
-            sub = row.row()
+        if cachetype != 'SMOKE':
+            sub = col.column()
             sub.enabled = enabled
             sub.prop(cache, "quick_cache")
-            row.prop(cache, "disk_cache")
 
-        layout.label(text=cache.info)
+            sub = col.column()
+            sub.enabled = bpy.data.file_is_saved
+            sub.prop(cache, "disk_cache")
+            col.label(text=cache.info)
+
+            sub = col.column()
+            sub.prop(cache, "use_library_path", "Use Lib Path")
 
         layout.separator()
 
-        row = layout.row()
-        row.operator("ptcache.bake_all", text="Bake All Dynamics").bake = True
-        row.operator("ptcache.free_bake_all", text="Free All Bakes")
-        layout.operator("ptcache.bake_all", text="Update All Dynamics to current frame").bake = False
+        split = layout.split()
+
+        col = split.column()
+
+        if cache.baked == True:
+            col.operator("ptcache.free_bake", text="Free Bake")
+        else:
+            col.operator("ptcache.bake", text="Bake").bake = True
+
+        sub = col.row()
+        sub.enabled = (cache.frames_skipped or cache.outdated) and enabled
+        sub.operator("ptcache.bake", text="Calculate To Frame").bake = False
+
+        sub = col.column()
+        sub.enabled = enabled
+        sub.operator("ptcache.bake_from_cache", text="Current Cache to Bake")
+
+
+        if wide_ui:
+            col = split.column()
+        col.operator("ptcache.bake_all", text="Bake All Dynamics").bake = True
+        col.operator("ptcache.free_bake_all", text="Free All Bakes")
+        col.operator("ptcache.bake_all", text="Update All To Frame").bake = False
 
 
 def effector_weights_ui(self, context, weights):
index 4dfe4f6372e200a44ac1e5cd71aa9da2822bdf9b..57fa40e4c5dd25311b5c6c53de1ef4c1e3a4f636 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 from properties_physics_common import basic_force_field_settings_ui
index e3e6e1dbb3d46e6b38e751644da59656677521cf..32acd88654d09cba5e09525edae8bff7daf0d355 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class PhysicButtonsPanel(bpy.types.Panel):
@@ -42,7 +42,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel):
         md = context.fluid
         wide_ui = context.region.width > narrowui
 
-        split = layout.split(percentage=0.5)
+        split = layout.split()
 
         if md:
             # remove modifier + settings
index b1cec9bb1202c400606f0837fb99acf3534a4d69..f362588cd98ba543c3c2c3563250041021209b01 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 from properties_physics_common import point_cache_ui
@@ -166,7 +166,7 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel):
         md = context.smoke.domain_settings
         cache = md.point_cache_low
 
-        point_cache_ui(self, context, cache, (cache.baked is False), 0, 1)
+        point_cache_ui(self, context, cache, (cache.baked is False), 'SMOKE')
 
 
 class PHYSICS_PT_smoke_highres(PhysicButtonsPanel):
@@ -222,7 +222,7 @@ class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel):
         md = context.smoke.domain_settings
         cache = md.point_cache_high
 
-        point_cache_ui(self, context, cache, (cache.baked is False), 0, 1)
+        point_cache_ui(self, context, cache, (cache.baked is False), 'SMOKE')
 
 
 class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel):
index 1cef6291c78c99c5472af41e169dd9438176f352..696f29810a35c48884d1555ced5ebf24f56f00dc 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 from properties_physics_common import point_cache_ui
@@ -97,7 +97,7 @@ class PHYSICS_PT_softbody_cache(PhysicButtonsPanel):
 
     def draw(self, context):
         md = context.soft_body
-        point_cache_ui(self, context, md.point_cache, softbody_panel_enabled(md), 0, 0)
+        point_cache_ui(self, context, md.point_cache, softbody_panel_enabled(md), 'SOFTBODY')
 
 
 class PHYSICS_PT_softbody_goal(PhysicButtonsPanel):
index b6137e271b999f5b1ff7ebfc65cba3074402ed94..3166023a83af1707c5c2f0fd517a73361f93bbc1 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class RENDER_MT_presets(bpy.types.Menu):
@@ -106,7 +106,6 @@ class RENDER_PT_layers(RenderButtonsPanel):
         col.label(text="Mask Layers:")
         col.prop(rl, "zmask_layers", text="")
 
-        
 
         layout.separator()
         layout.label(text="Include:")
@@ -188,14 +187,14 @@ class RENDER_PT_shading(RenderButtonsPanel):
         split = layout.split()
 
         col = split.column()
-        col.prop(rd, "render_textures", text="Textures")
-        col.prop(rd, "render_shadows", text="Shadows")
-        col.prop(rd, "render_sss", text="Subsurface Scattering")
-        col.prop(rd, "render_envmaps", text="Environment Map")
+        col.prop(rd, "use_textures", text="Textures")
+        col.prop(rd, "use_shadows", text="Shadows")
+        col.prop(rd, "use_sss", text="Subsurface Scattering")
+        col.prop(rd, "use_envmaps", text="Environment Map")
 
         if wide_ui:
             col = split.column()
-        col.prop(rd, "render_raytracing", text="Ray Tracing")
+        col.prop(rd, "use_raytracing", text="Ray Tracing")
         col.prop(rd, "color_management")
         col.prop(rd, "alpha_mode", text="Alpha")
 
@@ -234,7 +233,7 @@ class RENDER_PT_performance(RenderButtonsPanel):
         sub.active = rd.use_compositing
         sub.prop(rd, "free_image_textures")
         sub = col.column()
-        sub.active = rd.render_raytracing
+        sub.active = rd.use_raytracing
         sub.label(text="Acceleration structure:")
         sub.prop(rd, "raytrace_structure", text="")
         if rd.raytrace_structure == 'OCTREE':
@@ -314,6 +313,15 @@ class RENDER_PT_output(RenderButtonsPanel):
         if rd.file_format in ('AVI_JPEG', 'JPEG'):
             split = layout.split()
             split.prop(rd, "file_quality", slider=True)
+        
+        elif rd.file_format == 'MULTILAYER':
+            split = layout.split()
+
+            col = split.column()
+            col.label(text="Codec:")
+            col.prop(rd, "exr_codec", text="")
+            if wide_ui:
+                col = split.column()
 
         elif rd.file_format == 'OPEN_EXR':
             split = layout.split()
@@ -473,14 +481,14 @@ class RENDER_PT_antialiasing(RenderButtonsPanel):
     def draw_header(self, context):
         rd = context.scene.render
 
-        self.layout.prop(rd, "antialiasing", text="")
+        self.layout.prop(rd, "render_antialiasing", text="")
 
     def draw(self, context):
         layout = self.layout
 
         rd = context.scene.render
         wide_ui = context.region.width > narrowui
-        layout.active = rd.antialiasing
+        layout.active = rd.render_antialiasing
 
         split = layout.split()
 
index 119988f8fa332d2a75b48a9582f99f56adad1ebe..5e83fad38a01c4e753d224e6af18bc5885588ad3 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class SceneButtonsPanel(bpy.types.Panel):
@@ -89,7 +89,6 @@ class SCENE_PT_keying_sets(SceneButtonsPanel):
         row = layout.row()
 
         col = row.column()
-        # XXX: this fails because index is not what this expects...
         col.template_list(scene, "keying_sets", scene, "active_keying_set_index", rows=2)
 
         col = row.column(align=True)
index d537b5c29c212e7447a392b6cb07d79f1ec7bb1d..39c6bdf1d9f32c96e1e90304d2487260b4edaa0b 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class TEXTURE_MT_specials(bpy.types.Menu):
@@ -47,6 +47,7 @@ class TEXTURE_MT_envmap_specials(bpy.types.Menu):
 
 from properties_material import active_node_mat
 
+
 def context_tex_datablock(context):
     idblock = context.material
     if idblock:
@@ -71,7 +72,8 @@ class TextureButtonsPanel(bpy.types.Panel):
 
     def poll(self, context):
         tex = context.texture
-        if not tex or tex == None: return False
+        if not tex:
+            return False
         engine = context.scene.render.engine
         return (tex.type != 'NONE' or tex.use_nodes) and (engine in self.COMPAT_ENGINES)
 
@@ -102,7 +104,7 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel):
         engine = context.scene.render.engine
         if not hasattr(context, "texture_slot"):
             return False
-        return ((context.material or context.world or context.lamp or context.brush or context.texture) 
+        return ((context.material or context.world or context.lamp or context.brush or context.texture)
             and (engine in self.COMPAT_ENGINES))
 
     def draw(self, context):
@@ -212,7 +214,7 @@ class TextureSlotPanel(TextureButtonsPanel):
     def poll(self, context):
         if not hasattr(context, "texture_slot"):
             return False
-        
+
         engine = context.scene.render.engine
         return TextureButtonsPanel.poll(self, context) and (engine in self.COMPAT_ENGINES)
 
@@ -228,7 +230,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel):
 
         if not getattr(context, "texture_slot", None):
             return False
-        
+
         engine = context.scene.render.engine
         return (engine in self.COMPAT_ENGINES)
 
@@ -277,7 +279,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel):
                 row = layout.row()
                 row.active = tex.map_mode in ('FIXED', 'TILED')
                 row.prop(tex, "angle")
-    
+
                 row = layout.row()
                 row.active = tex.map_mode in ('TILED', '3D')
                 row.column().prop(tex, "size")
@@ -372,7 +374,8 @@ class TEXTURE_PT_influence(TextureSlotPanel):
                 factor_but(col, tex.map_raymir, "map_raymir", "raymir_factor", "Ray Mirror")
 
                 col.label(text="Geometry:")
-                factor_but(col, tex.map_normal, "map_normal", "normal_factor", "Normal")
+                # XXX replace 'or' when displacement is fixed to not rely on normal influence value.
+                factor_but(col, (tex.map_normal or tex.map_displacement), "map_normal", "normal_factor", "Normal")
                 factor_but(col, tex.map_warp, "map_warp", "warp_factor", "Warp")
                 factor_but(col, tex.map_displacement, "map_displacement", "displacement_factor", "Displace")
 
index 1ee47e942a0df3f43c690ce33b510f1a24e67c2e..e63d513a4b51d454b5f426e9f585ec84730d88b7 100644 (file)
@@ -20,7 +20,7 @@
 import bpy
 from rna_prop_ui import PropertyPanel
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class WorldButtonsPanel(bpy.types.Panel):
@@ -111,14 +111,14 @@ class WORLD_PT_mist(WorldButtonsPanel):
     def draw_header(self, context):
         world = context.world
 
-        self.layout.prop(world.mist, "enabled", text="")
+        self.layout.prop(world.mist, "use_mist", text="")
 
     def draw(self, context):
         layout = self.layout
         wide_ui = context.region.width > narrowui
         world = context.world
 
-        layout.active = world.mist.enabled
+        layout.active = world.mist.use_mist
 
         split = layout.split()
 
@@ -142,14 +142,14 @@ class WORLD_PT_stars(WorldButtonsPanel):
     def draw_header(self, context):
         world = context.world
 
-        self.layout.prop(world.stars, "enabled", text="")
+        self.layout.prop(world.stars, "use_stars", text="")
 
     def draw(self, context):
         layout = self.layout
         wide_ui = context.region.width > narrowui
         world = context.world
 
-        layout.active = world.stars.enabled
+        layout.active = world.stars.use_stars
 
         split = layout.split()
 
index 7f595207f53f6c854fd423eb037023cf9707e975..f0a5a3384be00571f56d2f36cc8860143c6121ff 100644 (file)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 
-narrowui = 180
+narrowui = bpy.context.user_preferences.view.properties_width_check
 
 
 class IMAGE_MT_view(bpy.types.Menu):
@@ -29,7 +29,7 @@ class IMAGE_MT_view(bpy.types.Menu):
         layout = self.layout
 
         sima = context.space_data
-        uv = sima.uv_editor
+        uv = sima.uv_editor
         toolsettings = context.tool_settings
 
         show_uvedit = sima.show_uvedit
@@ -42,6 +42,7 @@ class IMAGE_MT_view(bpy.types.Menu):
         layout.prop(sima, "update_automatically")
         if show_uvedit:
             layout.prop(toolsettings, "uv_local_view") # Numpad /
+            layout.prop(uv, "draw_other_objects")
 
         layout.separator()
 
@@ -471,7 +472,7 @@ class IMAGE_PT_scope_sample(bpy.types.Panel):
 
     def poll(self, context):
         sima = context.space_data
-        return sima 
+        return sima
 
     def draw(self, context):
         layout = self.layout
index 12734f0a931d6ee04a3ce644442f90fe4da136ea..3ffe10ffeac8bc21b94961e81fcca5942442bbab 100644 (file)
@@ -85,7 +85,7 @@ class INFO_MT_file(bpy.types.Menu):
         layout.operator_context = 'INVOKE_AREA'
         layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER')
         layout.menu("INFO_MT_file_open_recent")
-        layout.operator("wm.recover_last_session")
+        layout.operator("wm.recover_last_session", icon='RECOVER_LAST')
         layout.operator("wm.recover_auto_save", text="Recover Auto Save...")
 
         layout.separator()
@@ -199,6 +199,18 @@ class INFO_MT_mesh_add(bpy.types.Menu):
         layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid")
         layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey")
 
+class INFO_MT_curve_add(bpy.types.Menu):
+    bl_idname = "INFO_MT_curve_add"
+    bl_label = "Curve"
+
+    def draw(self, context):
+        layout = self.layout
+        layout.operator_context = 'INVOKE_REGION_WIN'
+        layout.operator("curve.primitive_bezier_curve_add", icon='CURVE_BEZCURVE', text="Bezier")
+        layout.operator("curve.primitive_bezier_circle_add", icon='CURVE_BEZCIRCLE', text="Circle")
+        layout.operator("curve.primitive_nurbs_curve_add", icon='CURVE_NCURVE', text="Nurbs Curve")
+        layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text="Nurbs Circle")
+        layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path")
 
 class INFO_MT_armature_add(bpy.types.Menu):
     bl_idname = "INFO_MT_armature_add"
@@ -221,7 +233,8 @@ class INFO_MT_add(bpy.types.Menu):
         #layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH')
         layout.menu("INFO_MT_mesh_add", icon='OUTLINER_OB_MESH')
 
-        layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE')
+        #layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE')
+        layout.menu("INFO_MT_curve_add", icon='OUTLINER_OB_CURVE')
         layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE')
         layout.operator_menu_enum("object.metaball_add", "type", text="Metaball", icon='OUTLINER_OB_META')
         layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT')
@@ -245,7 +258,7 @@ class INFO_MT_add(bpy.types.Menu):
             layout.operator_context = 'INVOKE_DEFAULT'
             layout.operator("object.group_instance_add", text="Group Instance...", icon='OUTLINER_OB_EMPTY')
         else:
-            layout.operator_menu_enum("object.group_instance_add", "type", text="Group Instance", icon='OUTLINER_OB_EMPTY')
+            layout.operator_menu_enum("object.group_instance_add", "group", text="Group Instance", icon='OUTLINER_OB_EMPTY')
 
 
 class INFO_MT_game(bpy.types.Menu):
@@ -416,6 +429,7 @@ classes = [
     INFO_MT_file_external_data,
     INFO_MT_add,
     INFO_MT_mesh_add,
+    INFO_MT_curve_add,
     INFO_MT_armature_add,
     INFO_MT_game,
     INFO_MT_render,
index 07b26fdc862aa3cd44150d30c6609f87a792ad76..0dcdbbb1defe134f4f7b1a8eecfc8ad0d979c6c5 100644 (file)
@@ -46,9 +46,18 @@ class LOGIC_PT_properties(bpy.types.Panel):
             row.prop(prop, "debug", text="", toggle=True, icon='INFO')
             row.operator("object.game_property_remove", text="", icon='X').index = i
 
+class LOGIC_MT_logicbricks_add(bpy.types.Menu):
+    bl_label = "Add"
+
+    def draw(self, context):
+        layout = self.layout
+
+        layout.operator_menu_enum("logic.sensor_add", "type", text="Sensor")
+        layout.operator_menu_enum("logic.controller_add", "type", text="Controller")
+        layout.operator_menu_enum("logic.actuator_add", "type", text="Actuator")
 
 classes = [
-    LOGIC_PT_properties]
+    LOGIC_PT_properties, LOGIC_MT_logicbricks_add]
 
 
 def register():
index c49ee68f0bfc9183b3b93634e9ff53db972b51ed..db641a48e38275d99d5f2a2ca1d4723d2f4fff4d 100644 (file)
@@ -108,6 +108,9 @@ class NODE_MT_select(bpy.types.Menu):
         layout.operator("node.select_all")
         layout.operator("node.select_linked_from")
         layout.operator("node.select_linked_to")
+        layout.operator("node.select_same_type")
+        layout.operator("node.select_same_type_next")
+        layout.operator("node.select_same_type_prev")
 
 
 class NODE_MT_node(bpy.types.Menu):
index a0f8f41f58a4ba63b412dc5a4a264ec4acc1164b..ec3c430feaa655d803c8f9065cfe106f94d1c463 100644 (file)
@@ -85,6 +85,7 @@ class OUTLINER_MT_view(bpy.types.Menu):
         layout.operator("screen.area_dupli")
         layout.operator("screen.screen_full_area")
 
+
 class OUTLINER_MT_search(bpy.types.Menu):
     bl_label = "Search"
 
@@ -98,6 +99,7 @@ class OUTLINER_MT_search(bpy.types.Menu):
         col.prop(space, "match_case_sensitive")
         col.prop(space, "match_complete")
 
+
 class OUTLINER_MT_edit_datablocks(bpy.types.Menu):
     bl_label = "Edit"
 
@@ -118,7 +120,7 @@ class OUTLINER_MT_edit_datablocks(bpy.types.Menu):
 classes = [
     OUTLINER_HT_header,
     OUTLINER_MT_view,
-       OUTLINER_MT_search,
+    OUTLINER_MT_search,
     OUTLINER_MT_edit_datablocks]
 
 
index 99844f87a325480b00251ad2810060368d285125..e300cfd3d3255166a585bd2d3349c79e5ed6a254 100644 (file)
@@ -237,6 +237,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.deinterlace_selected_movies")
         layout.separator()
 
         layout.operator("sequencer.duplicate")
@@ -382,11 +383,13 @@ class SEQUENCER_PT_preview(bpy.types.Panel):
         col.active = render.use_sequencer_gl_preview
         col.prop(render, "sequencer_gl_preview", text="")
 
+        '''
         col = layout.column()
         col.prop(render, "use_sequencer_gl_render", text="Open GL Render")
         col = layout.column()
         col.active = render.use_sequencer_gl_render
         col.prop(render, "sequencer_gl_render", text="")
+        '''
 
 
 class SEQUENCER_PT_effect(SequencerButtonsPanel):
@@ -447,10 +450,23 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel):
 
         elif strip.type == 'TRANSFORM':
             self.draw_panel_transform(strip)
-            
+
         elif strip.type == "MULTICAM":
             layout.prop(strip, "multicam_source")
 
+            row = layout.row(align=True)
+            sub = row.row()
+            sub.scale_x = 2.0
+            if not context.screen.animation_playing:
+                sub.operator("screen.animation_play", text="", icon='PLAY')
+            else:
+                sub.operator("screen.animation_play", text="", icon='PAUSE')
+
+            row.label("Cut To")
+            for i in range(1, strip.channel):
+                row.operator("sequencer.cut_multicam", text=str(i)).camera = i
+
+
         col = layout.column(align=True)
         if strip.type == 'SPEED':
             col.prop(strip, "speed_fader", text="Speed fader")
@@ -506,7 +522,7 @@ class SEQUENCER_PT_input(SequencerButtonsPanel):
                               'CROSS', 'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP',
                               'PLUGIN',
                               'WIPE', 'GLOW', 'TRANSFORM', 'COLOR',
-                              'MULTICAM','SPEED')
+                              'MULTICAM', 'SPEED')
 
     def draw_filename(self, context):
         pass
@@ -599,6 +615,7 @@ class SEQUENCER_PT_input_image(SEQUENCER_PT_input):
             col = split.column()
             col.prop(elem, "filename", text="") # strip.elements[0] could be a fallback
 
+
 class SEQUENCER_PT_input_secondary(SEQUENCER_PT_input):
     bl_label = "Strip Input"
 
@@ -615,6 +632,7 @@ class SEQUENCER_PT_input_secondary(SEQUENCER_PT_input):
     def draw_filename(self, context):
         pass
 
+
 class SEQUENCER_PT_sound(SequencerButtonsPanel):
     bl_label = "Sound"
 
index 9f52ae25121cd5c97dbdb852ed4056c7bb32b8e0..10740f788f5337a6de336e38f483ee0fdb2ae50b 100644 (file)
@@ -274,6 +274,22 @@ class TEXT_MT_edit(bpy.types.Menu):
         layout.menu("TEXT_MT_edit_to3d")
 
 
+class TEXT_MT_toolbox(bpy.types.Menu):
+    bl_label = ""
+
+    def draw(self, context):
+        layout = self.layout
+        layout.operator_context = 'INVOKE_DEFAULT'
+
+        layout.operator("text.cut")
+        layout.operator("text.copy")
+        layout.operator("text.paste")
+
+        layout.separator()
+
+        layout.operator("text.run_script")
+
+
 classes = [
     TEXT_HT_header,
     TEXT_PT_properties,
@@ -285,7 +301,8 @@ classes = [
     TEXT_MT_edit_view,
     TEXT_MT_edit_select,
     TEXT_MT_edit_markers,
-    TEXT_MT_edit_to3d]
+    TEXT_MT_edit_to3d,
+    TEXT_MT_toolbox]
 
 
 def register():
index 7417b9659b2d9d35b51c2180e521c999be9c3d6a..00bdcf785faf72bc92b2d54f644263c5857e25f4 100644 (file)
@@ -39,7 +39,7 @@ class TIME_HT_header(bpy.types.Header):
             sub.menu("TIME_MT_frame")
             sub.menu("TIME_MT_playback")
 
-        layout.prop(scene, "use_preview_range", text="PR")
+        layout.prop(scene, "use_preview_range", text="", toggle=True)
 
         row = layout.row(align=True)
         if not scene.use_preview_range:
@@ -67,7 +67,7 @@ class TIME_HT_header(bpy.types.Header):
         row.operator("screen.frame_jump", text="", icon='FF').end = True
 
         row = layout.row(align=True)
-        row.prop(tools, "use_auto_keying", text="", toggle=True, icon='REC')
+        row.prop(tools, "use_auto_keying", text="", toggle=True)
         if screen.animation_playing and tools.use_auto_keying:
             subsub = row.row()
             subsub.prop(tools, "record_with_nla", toggle=True)
index e00754f6fb7c48fe8f72102824d7de007dd9d6ab..a850f543e041bdcf3ccb052c8c90e5b5660c4c4a 100644 (file)
@@ -165,6 +165,13 @@ class USERPREF_PT_interface(bpy.types.Panel):
         sub.enabled = view.show_mini_axis
         sub.prop(view, "mini_axis_size", text="Size")
         sub.prop(view, "mini_axis_brightness", text="Brightness")
+        
+        col.separator()
+        col.separator()
+        col.separator()
+        
+        col.label(text="Properties Window:")
+        col.prop(view, "properties_width_check")
 
         row.separator()
         row.separator()
@@